每日一扣145. 二叉树的后序遍历
Posted 李彬的技术笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一扣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
来都来了,要不点个
在看
再走?
以上是关于每日一扣145. 二叉树的后序遍历的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode第145题—二叉树的后序遍历—Python实现
LeetCode 145. 二叉树的后序遍历c++/java详细题解
LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)