102. 二叉树的层次遍历

题意

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

解题思路

  1. 递归:利用前序遍历的思想,在递归过程中记录下结点的深度,在对应深度将结点加入到结果中;

  2. 迭代:使用两个队列是因为一个用于记录当前层的结点,另外一个则记录下一层的结点,用于后面和当前队列进行替换;

实现

class Solution(object):    def levelOrder(self, root):        """        迭代实现        :type root: TreeNode        :rtype: List[List[int]]        """        if not root:            return []

        # 使用两个队列是因为一个用于记录当前层的结点,另外一个则记录下一层的结点,用于后面和当前队列进行替换        # 致于为什么要使用队列,是因为需要题目要求结点的顺序是从左到右,也就是先加入的要先取出,这是队列的特性;        cur_level, tmp_level, result = [root], [], [[]]        while cur_level:            cur = cur_level.pop(0)            result[-1].append(cur.val)            # 替代队列加入下一层的结点            if cur.left:                tmp_level.append(cur.left)            if cur.right:                tmp_level.append(cur.right)            # 是否需要添加新的一层            if not cur_level and tmp_level:                cur_level = tmp_level[:]                tmp_level = []                result.append([])        return result

    def levelOrder(self, root):        """        递归实现        执行用时 : 36 ms, 在Binary Tree Level Order Traversal的Python提交中击败了39.42% 的用户    内存消耗 : 12.6 MB, 在Binary Tree Level Order Traversal的Python提交中击败了0.82% 的用户        :type root: TreeNode        :rtype: List[List[int]]        """        result = []        if not root:            return result​        def helper(node, depth, res):           """           利用前序遍历的思想           """            if not node:                return            # 超出递归的长度表明是新的一层,则新添加数组            if depth >= len(res):                res.append([])            # 可以理解成每个node都能对应到树的depth            res[depth].append(node.val)            if node.left:                helper(node.left, depth+1, res)            if node.right:                helper(node.right, depth+1, res)​        helper(root, 0, result)        return result

转载于:https://www.cnblogs.com/George1994/p/10605049.html

102. 二叉树的层次遍历相关推荐

  1. c++根据二叉树的层次遍历建立二叉树_LeetCode | 102.二叉树的层次遍历

    这次来写一下 LeetCode 的第 102 题,二叉树的层次遍历. 题目描述 题目直接从 LeetCode 上截图过来,题目如下: 102.二叉树的层次遍历题目 上面的题就是 二叉树的层次遍历 题目 ...

  2. leetcode 102 java_Java实现 LeetCode 102 二叉树的层次遍历

    102. 二叉树的层次遍历 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 ...

  3. 按层次遍历二叉树_LeetCode | 102.二叉树的层次遍历

    这次来写一下 LeetCode 的第 102 题,二叉树的层次遍历. 题目描述 题目直接从 LeetCode 上截图过来,题目如下: 上面的题就是 二叉树的层次遍历 题目的截图,同时 LeetCode ...

  4. Leetcode 102. 二叉树的层次遍历

    给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3    / \   9  20     / ...

  5. LeetCode 102. 二叉树的层次遍历(BFS)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15, ...

  6. 【Leetcode】102. 二叉树的层次遍历

    题目 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \15 7 返回其层 ...

  7. LeetCode 102. 二叉树的层次遍历(递归)(迭代)

    题目描述 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 思路 详见链接 代码 递归 #class TreeNode: # def __init__(self,x): ...

  8. Python刷leetcode 102. 二叉树的层次遍历

    给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \15 7 返回其层次遍历 ...

  9. Leetcode 102. 二叉树的层次遍历 解题思路及C++实现

    解题思路: 使用队列来存储每一层的节点,因为输出的vector中,每一层是一个数组,所以在循环内,需要另外一个队列,总共使用两个队列. 没获取一层的节点,就更新第一个队列a,将队列b直接赋给a. /* ...

最新文章

  1. Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法
  2. lvs为何不能完全替代DNS轮询--转
  3. Java黑皮书课后题第7章:7.8(求数组的平均值)使用下面的方法头编写两个重载的方法,返回数组的平均数。编写一个测试程序,提示用户输入10个double型值,然后调用这个方法显示平均值
  4. 自动控制matlab实验,自动控制matlab实验.doc
  5. 免密登录堡垒机和服务器
  6. 【POJ - 1062】【nyoj - 510】昂贵的聘礼 (Dijkstra最短路+思维)
  7. LUNA16_Challange数据预处理2
  8. Python 之 获取Host Esxi 主机信息
  9. 在没有显示器和IP未知的情况下如何使用树莓派
  10. Java速成课程建议
  11. 部署asp.net mvc_在ASP.NET 2.0上部署ASP.NET MVC
  12. 攻防世界web练习区
  13. 树莓派之火焰传感器模块
  14. 鳄克斯系列服务器,英雄联盟:FPX冠军庆典活动进行中 一半宝石入手海科克斯系列皮肤...
  15. Python每日一练(20230301)
  16. c++define的用法
  17. 2014中国计量学院matlab考试卷,南京信息工程大学2011普本电路分析期末试卷A及答案...
  18. 调用Feign接口报错:HttpMessageNotReadableException:JSON parse error:Illegal character ((CTRL-CHAR, code 31)
  19. Prometheus 实战于源码分析之storage
  20. 【JAVA】MANIFEST.MF / CERT.SF 中 文件SHA1-Digest计算方法

热门文章

  1. 易语言修改虚拟机硬盘id_易语言本地虚拟机源码
  2. matlab怎么相加相同id的几行,matlab几个有用的技巧
  3. Python入门--局部变量,全局变量,作用域,LEGB规则
  4. 计算机网络—数据链路层的流量控制与可靠传输机制(思维导图)
  5. 人脸检测caffe下步骤
  6. [高光谱] Hyperspectral-Classification Pytorch 的高光谱场景的通用类 HyperX
  7. grafana设置mysql为数据源,并进行可视化
  8. python机器学习库sklearn——SGD梯度下降法
  9. linux集群中mpi的并行计算环境简单配置,linux集群中MPI的并行计算环境简单配置(转)...
  10. 《人性的弱点》--如欲采蜜,勿蹴蜂房。