LeetCode-107-二叉树的层次遍历 II(python)

2019-08-21  本文已影响0人  JunfengsBlog
二叉树的层次遍历 II
目前只要涉及到层次遍历的题,我基本都用的相同的代码模板就可以解决。
这一题我用了python里面的双端队列:collections.deque(),可以在保存每一层非None节点的时候反向插入列表,就可以实现题目要求的自底向上的层次遍历
心得:发现只要和层次遍历相关的代码都是在固定的代码模板里面修修改改就可以全部AC。一定是我太菜了才会套模板,还需要继续学习💪
class Solution:
    def levelOrderBottom(self, root: TreeNode):
        outPutList = collections.deque()
        queue = [root]
        while queue:
            layer = list()
            layerWithoutNone = list()
            next_queue = list()
            for node in queue:
                if not node:
                    layer.append(None)
                    continue

                layer.append(node.val)
                next_queue.append(node.left)
                next_queue.append(node.right)
                if node.val is not None:
                    layerWithoutNone.append(node.val)

            queue = next_queue
            outPutList.appendleft(layerWithoutNone)
        outPutList = list(outPutList)
        return outPutList[1:]
        
上一篇下一篇

猜你喜欢

热点阅读