数据结构-树

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

  

posted @ 2020-04-06 18:33  睡觉了嘛  阅读(142)  评论(0编辑  收藏  举报