【LeeCode 困难 树 python3】145. 二叉树的后序遍历

想要看更加舒服的排版、更加准时的推送
关注公众号“不太灵光的程序员”
每日八点有干货推送,微信随时解答你的疑问

145. 二叉树的后序遍历 python3

困难

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

示例:

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

   1
    \
     2
    /
   3

输出: [3,2,1]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?

from typing import List


# Definition for a binary tree node.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


# 递归
# 44%
# 执行用时:44 ms
# 内存消耗:13.8 MB
class Solution:
    def preorderTraversal(self, root: TreeNode) -> List[int]:
        ret = []
        def pT(node):
            if node.left:
                pT(node.left)
            if node.right:
                pT(node.right)
            ret.append(node.val)
        if root:
            pT(root)
        return ret


# 88%
# 执行用时:36 ms
# 内存消耗:13.7 MB
class Solution:
    def preorderTraversal(self, root: TreeNode) -> List[int]:
        if not root:
            return []

        stack = [root]
        ret = []

        while stack:
            node = stack.pop()
            ret.append(node.val)
            if node.left:
                stack.append(node.left)
            if node.right:
                stack.append(node.right)
        ret.reverse()
        return ret


t2 = TreeNode(2)
t2.left = TreeNode(3)
t = TreeNode(1)
t.right = t2

s = Solution()
ret = s.preorderTraversal(t)
print(ret)

猜你喜欢

转载自blog.csdn.net/qq_23934063/article/details/107551339