zoukankan      html  css  js  c++  java
  • LeetCode 145. 二叉树的后序遍历

    145. 二叉树的后序遍历

    Difficulty: 中等

    给定一个二叉树,返回它的 _后序 _遍历。

    示例:

    输入: [1,null,2,3]  
       1
        
         2
        /
       3 
    
    输出: [3,2,1]
    

    进阶: 递归算法很简单,你可以通过迭代算法完成吗?

    Solution

    迭代

    二叉树的后序遍历,即“左右根”,有一个讨巧的解法,先把二叉树的“根右左”遍历结果拿到,然后取“根右左”的倒序就行了。

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    class Solution:
        def postorderTraversal(self, root: TreeNode) -> List[int]:
            res, stack, pre = [], [root], None
            while stack:
                node = stack.pop()
                if node:
                    res.append(node.val)
                    stack.append(node.left)
                    stack.append(node.right)
            return res[::-1]
    

    递归

    class Solution:
        def postorderTraversal(self, root: TreeNode) -> List[int]:
            if not root:
                return []
            else:
                l = self.postorderTraversal(root.left)
                r = self.postorderTraversal(root.right)
                d = [root.val]
                return l + r + d
    
  • 相关阅读:
    Github地址
    第三次冲刺12.16
    第三次冲刺12.07~12.15
    第二次冲刺11.24~12.03
    第十天
    照片
    最终总结
    app的推广
    第三个Sprint冲刺事后诸葛亮报告
    第三个Sprint团队贡献分
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14590158.html
Copyright © 2011-2022 走看看