145.binary-tree-postorder-traversal
Statement
Metadata
- Link: 二叉树的后序遍历
 - Difficulty: Easy
 - Tag: 
栈树深度优先搜索二叉树 
给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。
示例 1:
 输入:root = [1,null,2,3]
输出:[3,2,1]
 示例 2:
输入:root = []
输出:[]
 示例 3:
输入:root = [1]
输出:[1]
 
提示:
- 树中节点的数目在范围 
[0, 100]内 -100 <= Node.val <= 100
进阶:递归算法很简单,你可以通过迭代算法完成吗?
Metadata
- Link: Binary Tree Postorder Traversal
 - Difficulty: Easy
 - Tag: 
StackTreeDepth-First SearchBinary Tree 
Given the root of a binary tree, return the postorder traversal of its nodes' values.
Example 1:
 Input: root = [1,null,2,3]
Output: [3,2,1]
 Example 2:
Input: root = []
Output: []
 Example 3:
Input: root = [1]
Output: [1]
 
Constraints:
- The number of the nodes in the tree is in the range 
[0, 100]. -100 <= Node.val <= 100
Follow up: Recursive solution is trivial, could you do it iteratively?
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
from typing import List, Optional
class Solution:
    def __init__(self):
        self.res = []
    def dfs(self, rt: TreeNode) -> None:
        if not rt:
            return
        self.dfs(rt.left)
        self.dfs(rt.right)
        self.res.append(rt.val)
    def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        self.dfs(root)
        return self.res
  最后更新: October 11, 2023