阅读目录
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路及Python实现
- 读完题目,发现这不就是二叉树的广度遍历吗?
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def __init__(self):
self.root = None
def add(self, val): # 添加结点测试
node = TreeNode(val)
if self.root is None:
self.root = node
return
queue = [self.root]
while queue:
temp_node = queue.pop(0)
if temp_node.left is None:
temp_node.left = node
return
else:
queue.append(temp_node.left)
if temp_node.right is None:
temp_node.right = node
return
else:
queue.append(temp_node.right)
def PrintFromTopToBottom(self, root): # 如果不需要传root,可以直接拿self.root
if root is None:
return []
queue = [root]
ret = []
while queue:
temp_node = queue.pop(0)
ret.append(temp_node.val)
if temp_node.left:
queue.append(temp_node.left)
if temp_node.right:
queue.append(temp_node.right)
return ret
obj = Solution()
for i in range(1, 9):
obj.add(i)
print(obj.PrintFromTopToBottom(obj.root)) # [1, 2, 3, 4, 5, 6, 7, 8]