《剑指offer》面试题之从上往下打印出二叉树(Python实现)
题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路:利用辅助队列存储待打印结点
完整代码如下:
# coding:utf-8
class Node(object):
"""
定义二叉树结点
"""
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def solve(root):
if not root:
return None
# 存放结果
result = []
# 存储要打印的节点
temp = []
temp.append(root)
while temp:
# 打印当前结点,若有子节点,则放入temp队列
curNode = temp.pop(0)
result.append(curNode.data)
if curNode.left:
temp.append(curNode.left)
if curNode.right:
temp.append(curNode.right)
return result
if __name__ =='__main__':
# 测试代码
node = Node(1)
node.left = Node(2)
node.left.left = Node(3)
node.left.right = Node(4)
node.right = Node(5)
node.right.right = Node(6)
result = solve(node)
print(result)
#[1,2,5,3,4,6]
如有错误,欢迎指正和交流~