zoukankan      html  css  js  c++  java
  • LeetCode102. 二叉树的层次遍历

    102. 二叉树的层次遍历

    描述

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

    示例

    例如,给定二叉树: [3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

    返回其层次遍历结果:

    [
      [3],
      [9,20],
      [15,7]
    ]
    

    思路

    关于树的问题基本上都是用递归来解决的,此题也是需要考虑递归。

    对树,常使用的查找方法有深度优先查找和广度优先查找,在此使用 DFS ,因为它的代码易于理解。

    层次遍历的核心在于需要设置一个层数变量,在进行 DFS 的时候将节点放入相应层数的列表中。

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    
    class Solution(object):
        def levelOrder(self, root):
            """
            :type root: TreeNode
            :rtype: List[List[int]]
            """
            def dfs(root, level, res):
                if root is None:
                    return
    
                if len(res) <= level:
                    res.append([])
    
                res[level].append(root.val)
                dfs(root.left, level+1, res)
                dfs(root.right, level+1, res)
    
            res = []
            dfs(root, 0, res)
            return res
    

    GitHub 地址: https://github.com/protea-ban/LeetCode

  • 相关阅读:
    散列
    AVL树的单旋与双旋
    Ubuntu系统目录
    os x文件系统结构简介
    c语言静态局部变量
    创建J2EE 5.0工程后,JSTL不能使用解决方法
    mysql
    指针
    servlet 访问项目
    c数组
  • 原文地址:https://www.cnblogs.com/banshaohuan/p/10824519.html
Copyright © 2011-2022 走看看