LeetCode 145. Binary Tree Postorder Traversal 题解

张开发
2026/4/14 22:58:12 15 分钟阅读

分享文章

LeetCode 145. Binary Tree Postorder Traversal 题解
LeetCode 145. Binary Tree Postorder Traversal 题解题目描述给你二叉树的根节点root返回它节点值的后序遍历。示例 1输入root [1,null,2,3] 输出[3,2,1]示例 2输入root [] 输出[]示例 3输入root [1] 输出[1]解题思路方法深度优先搜索DFS思路使用递归的方法按照后序遍历的顺序访问节点后序遍历的顺序是左子树 - 右子树 - 根节点递归的终止条件是当节点为空时返回对于每个节点先递归遍历左子树然后递归遍历右子树最后将其值加入结果列表复杂度分析时间复杂度O(n)其中 n 是二叉树的节点数。每个节点只被访问一次。空间复杂度O(h)其中 h 是二叉树的高度。最坏情况下二叉树退化为链表空间复杂度为 O(n)。代码实现方法深度优先搜索DFS# Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution: def postorderTraversal(self, root: Optional[TreeNode]) - List[int]: # 处理边界情况 if not root: return [] # 初始化结果列表 result [] # 后序遍历左子树 - 右子树 - 根节点 def dfs(node): if not node: return # 递归遍历左子树 dfs(node.left) # 递归遍历右子树 dfs(node.right) # 将节点值加入结果列表 result.append(node.val) # 调用深度优先搜索函数 dfs(root) return result测试用例测试用例 1输入root [1,null,2,3]输出[3,2,1]测试用例 2输入root []输出[]测试用例 3输入root [1]输出[1]总结本题是深度优先搜索的经典应用问题主要考察对深度优先搜索算法的理解和使用。通过使用深度优先搜索我们可以高效地实现二叉树的后序遍历。深度优先搜索的核心思想是使用递归的方法按照后序遍历的顺序访问节点即左子树 - 右子树 - 根节点。这种方法不仅适用于二叉树的后序遍历问题还可以应用于许多其他需要树遍历的问题。掌握深度优先搜索的使用对于解决这类问题非常重要。

更多文章