• 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
    
  • 相关阅读:
    06
    05
    继承
    0713作业
    0712作业
    0711作业
    福彩双色球作业
    0709作业
    选择语句+循环语句作业
    0706作业
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14590158.html
Copyright © 2020-2023  润新知