面试题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