Description
给定一个二叉树,返回它的 后序 遍历。
示例:
Example 1:
输入: [1,null,2,3]
1
\
2
/
3
输出: [3,2,1]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
分析
题目的意思是:实现二叉树的后续遍历,没什么说的,需要用到栈,首先把根节点加入到栈,然后遍历栈,拓展左右子节点,然后不断的取出值进行拓展。最后输出的结果是output的逆序。从上到下,从右到左,逆序就是从左到右,从下到上,刚好是后序遍历
代码
# 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]:
if(root is None):
return []
output=[]
stack=[root]
while(stack):
node=stack.pop()
output.append(node.val)
if(node.left is not None):
stack.append(node.left)
if(node.right is not None):
stack.append(node.right)
output.reverse()
return output
参考文献
[LeetCode] 二叉树的后序遍历