题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解答:
class Solution:
# 返回从上到下每个节点值列表,例:[1,2,3]
def PrintFromTopToBottom(self, root):
# write code here
if not root:
return []
else:
res=[]
nodes=[root]
while nodes:
node=nodes.pop(0)
if node.left:
nodes.append(node.left)
if node.right:
nodes.append(node.right)
res.append(node.val)
return res
总结:
- 首先依然是老样子,需要判空。
- 要构建两个空列表,一个用来放结果,一个用来起到中间过渡作用。
- 首先在根节点不为空的情况下,取得根节点放入nodes列表中。
- 然后将nodes列表中元素开始挨个弹出,每弹出一个,就判断其有没有左右孩子,如果有就加入nodes列表中。判断完之后,将刚刚弹出的这个节点放入res结果列表里去。
- 剩余的步骤以此类推,接着循环,直到nodes列表为空为止。
- 二叉树的题目用递归方法的话快捷又方便,但还是建议掌握递归和非递归方法都要掌握。