美文网首页
二叉树 Leetcode 107 二叉树的层次遍历II

二叉树 Leetcode 107 二叉树的层次遍历II

作者: 禾木清清 | 来源:发表于2019-07-14 19:33 被阅读0次

    题目

    给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

    例如:
    给定二叉树 [3,9,20,null,null,15,7],

    3
    

    /
    9 20
    /
    15 7
    返回其自底向上的层次遍历为:

    [
    [15,7],
    [9,20],
    [3]
    ]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解题思路

    使用stack保存每一层节点,遍历取值同时保存下一层的节点。

    • 因为要逆向输出,所以要逆转序列。

    代码

    # 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 levelOrderBottom(self, root):
            """
            :type root: TreeNode
            :rtype: List[List[int]]
            """
            if not root:
                return []
            
            res = []
            stack = [root]
            
            while stack:
                nodes = []
                temp = []
                for node in stack:
                    nodes.append(node.val)
                    if node.left:
                        temp.append(node.left)
                    if node.right:
                        temp.append(node.right)
                stack = temp
                res.append(nodes)
            
            return res[::-1]
                    
    

    相关文章

      网友评论

          本文标题:二叉树 Leetcode 107 二叉树的层次遍历II

          本文链接:https://www.haomeiwen.com/subject/ytpikctx.html