• 【LeetCode】面试题32-2. 从上到下打印二叉树II


    题目:

    思路:

    因为要求每层节点打印到一行,所以层次遍历时需要知道行的信息。个人思路通过两个队列的转换表示换行,优化思路记录当前层队列的长度。

    代码:

    Python

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    # 队列交换
    class Solution(object):
        def levelOrder(self, root):
            """
            :type root: TreeNode
            :rtype: List[List[int]]
            """
            if root is None:
                return []
            levelQueue = []
            tmpQueue = [root]
            res = []
            while tmpQueue:
                # 给tmpQueue/tmpRes重新赋值[], 没有修改其元素不用deepcopy
                levelQueue = tmpQueue
                tmpQueue = []
                tmpRes = []
                for elem in levelQueue:
                    tmpRes.append(elem.val)
                    if elem.left is not None:
                        tmpQueue.append(elem.left)
                    if elem.right is not None:
                        tmpQueue.append(elem.right)
                res.append(tmpRes)
            return res
    
    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    # 队列长度
    class Solution(object):
        def levelOrder(self, root):
            """
            :type root: TreeNode
            :rtype: List[List[int]]
            """
            if root is None:
                return []
            queue = [root]
            res = []
            while queue:
                tmp = []
                for _ in range(len(queue)): # 这里len(queue)只在第一次计算, 之后不会变
                    node = queue.pop()
                    tmp.append(node.val)
                    if node.left:
                        queue.insert(0, node.left)
                    if node.right:
                        queue.insert(0, node.right)
                res.append(tmp)
            return res
    

    相关问题

  • 相关阅读:
    7、cad图纸打印
    对账
    练习10—去掉图片文字
    6、cad里面如何快速将图纸的线条全部变成黑色
    5、cad如何快速选中图纸上所有文字
    4、如何修改cad的背景色为白色
    练习九—快速修饰面部光影
    iOS alloc&init探索
    export default / export const
    Vue2.0+组件库总结
  • 原文地址:https://www.cnblogs.com/cling-cling/p/13072870.html
Copyright © 2020-2023  润新知