题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
首先这个用C++ 的队列实现是比较简单方便的,下面是python实现,定义了多个列表,比起C++要的队列要稍微麻烦点
思路:
(1)首先定义一个需要返回的列表 res
(2)每次遍历到有节点的时候都要插入节点值到res
(3)另外定义 nextlist 列表目的是保存下一层有节点的值
(4)等到下一层没有节点的时候,nextlist自然也就为空,跳出循环,返回res
def PrintFromTopToBottom(self, root):
if not root:
return []
res = []#最终的返回列表
# 先将root中的成员拷贝到新定义的 newroot中
newroot = [root]
while newroot:
nextlist = [] # 定义的下一个列表,每一次循环都要清空
for i in newroot:
# 存在左右孩子的话就插到nextlist 列表中
if i.left:
nextlist.append(i.left)
if i.right:
nextlist.append(i.right)
res.append(i.val)
newroot = nextlist
return res
京公网安备 11010502036488号