【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     

转载于:https://www.cnblogs.com/GoodRnne/p/10852570.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值