面试题32 - I. 从上到下打印二叉树
思路:采用广度优先的思路,先定一个空的队列,把第一个节点存放到空的队列中去,然后依次在队列中取出最左边节点,把值放入到输入的列表中,并判断改节点是否有子节点,如果有则把子节点也放入到队列中去,直到队列为空,树则遍历结束。
class Solution:
def levelOrder(self, root: TreeNode) -> List[int]:
mylist = [] # 打印最后的输出
mydeque = [] # 定一个空队列存储每一次广度遍历的子节点
if not root: # 如果是root的数据结构为空 直接输出
return mylist
mydeque.append(root) # 把跟节点放入的队列中去
while mydeque: # 如果队列为空了就结束
node = mydeque.pop(0) # 取出队列的第一个元素
mylist.append(node.val)
if node.left: # 如果node节点的左节点中把做节点放入到队列中去
mydeque.append(node.left)
if node.right:
mydeque.append(node.right) # 如果node节点的右节点中把做节点放入到队列中去
return mylist