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

    <层序遍历的递归解法>

    <深搜转变为维护二维数组>

    题目描述


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

    示例:
    二叉树:[3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

    返回其层次遍历结果:

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

    题解 


     递归解法:在DFS过程中,维护一个二维数组。

    class Solution:
        def levelOrder(self, root):
            """
            :type root: TreeNode
            :rtype: List[List[int]]
            """
            levels = []
            if not root:
                return levels
            
            def helper(node, level):
                # start the current level
                if len(levels) == level:
                    levels.append([])
    
                # append the current node value
                levels[level].append(node.val)
    
                # process child nodes for the next level
                if node.left:
                    helper(node.left, level + 1)
                if node.right:
                    helper(node.right, level + 1)
                
            helper(root, 0)
            return levels
    
    作者:LeetCode
    链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/solution/er-cha-shu-de-ceng-ci-bian-li-by-leetcode/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    总结


     1. 递归完成层序遍历

  • 相关阅读:
    图01--[基本概念&&图的实现]
    并查集01--[Quick Find&&Quick Union]
    排序05--[计数排序&&基数排序&&桶排序]
    排序04--[快速排序&&希尔排序]
    harukaの赛前日常
    harukaの收藏夹
    hello world&Restart the Journey
    成外集训小记
    CSPS2019游记
    博弈论初步
  • 原文地址:https://www.cnblogs.com/remly/p/12691152.html
Copyright © 2011-2022 走看看