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
    
  • 相关阅读:
    Android四大组件
    git命令记录
    .net core试水
    记一次NPOI的使用
    上位机开发经验教训总结
    Python爬虫,爬取腾讯漫画实战
    记一次微信小程序的开发
    sql使用cte表达式进行递归查询
    使用百度的webuploader进行附件上传
    Winform文件上传
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14590158.html
Copyright © 2011-2022 走看看