zoukankan      html  css  js  c++  java
  • 【LeetCode每天一题】Binary Tree Level Order Traversal(二叉树的层次遍历)

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

    For example:
    Given binary tree [3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

     

    return its level order traversal as:

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

    思路

      这道题可以使用广度优先遍历的方法来解决,但是相对于广度优先这里处理的情况稍微也要复杂一些,因为每一层遍历的结果都需要单独的进行使用一个列表进行存在。根据这个我们可以设置一个变量来记录每一层中的节点数,进行遍历(当然需要使用到列表这个辅助空间进行遍历)。
    解决代码

    
    
     1 # Definition for a binary tree node.
     2 # class TreeNode(object):
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.left = None
     6 #         self.right = None
     7 
     8 class Solution(object):
     9     def levelOrder(self, root):
    10         """
    11         :type root: TreeNode
    12         :rtype: List[List[int]]
    13         """
    14         if not root:
    15             return []
    16         res = []         # 结果列表
    17         stack  = [root]    # 栈存当前层中的节点
    18         while stack:        # 当栈为空时,说明遍历结束
    19             tem, count = [], len(stack)      # tem存储当前层次的节点值,count存储当前层次的节点数。
    20             for _ in range(count): 遍历count次
    21                 node = stack.pop(0)  # 从列表中第一个节点进行弹出, 并判断左右节点是否为空,进行相应的添加操作。
    22                 if node.left:         
    23                     stack.append(node.left)
    24                 if node.right:
    25                     stack.append(node.right)
    26                 tem.append(node.val) # 将当前层所有节点值记录到结果中中
    27             res.append(tem)
    28         return res     
  • 相关阅读:
    Whidbey 开发
    构建软件数字安全带系列课程
    微软产品生命周期模型系列课程
    Windows Mobile 2nd 开发黄金周
    微软高性能运算系列课程
    _tmain()和main()区别
    简单工厂模式&工厂方法模式
    单例模式
    java中去除字符串(String)中的换行字符(\r \n \t)
    阿里巴巴 Java开发手册1.4.0
  • 原文地址:https://www.cnblogs.com/GoodRnne/p/10852570.html
Copyright © 2011-2022 走看看