BM25 二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [3,2,1]
解题思路:
后序遍历的顺序
left right root
前序遍历的顺序
root left right
把后序遍历翻转,将会得到:
root right left
相比较前序遍历,仅仅改变了left 和 right的顺序:
所以本题思路将会是:在前序遍历中,把left 和 right的顺序调换,然后输出反转的树即可。
Python代码:
# 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]:
stack = []
result = []
if not root:
return result
stack.append(root)
while stack:
node = stack.pop()
result.append(node.val)
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
return result[::-1]