LeetCode 144. Binary Tree Preorder Traversal 题解

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

分享文章

LeetCode 144. Binary Tree Preorder Traversal 题解
LeetCode 144. Binary Tree Preorder Traversal 题解题目描述给你二叉树的根节点root返回它节点值的前序遍历。示例 1输入root [1,null,2,3] 输出[1,2,3]示例 2输入root [] 输出[]示例 3输入root [1] 输出[1]示例 4输入root [1,2] 输出[1,2]示例 5输入root [1,null,2] 输出[1,2]解题思路方法深度优先搜索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 preorderTraversal(self, root: Optional[TreeNode]) - List[int]: # 处理边界情况 if not root: return [] # 初始化结果列表 result [] # 前序遍历根节点 - 左子树 - 右子树 def dfs(node): if not node: return # 将节点值加入结果列表 result.append(node.val) # 递归遍历左子树 dfs(node.left) # 递归遍历右子树 dfs(node.right) # 调用深度优先搜索函数 dfs(root) return result测试用例测试用例 1输入root [1,null,2,3]输出[1,2,3]测试用例 2输入root []输出[]测试用例 3输入root [1]输出[1]测试用例 4输入root [1,2]输出[1,2]测试用例 5输入root [1,null,2]输出[1,2]总结本题是深度优先搜索的经典应用问题主要考察对深度优先搜索算法的理解和使用。通过使用深度优先搜索我们可以高效地实现二叉树的前序遍历。深度优先搜索的核心思想是使用递归的方法按照前序遍历的顺序访问节点即根节点 - 左子树 - 右子树。这种方法不仅适用于二叉树的前序遍历问题还可以应用于许多其他需要树遍历的问题。掌握深度优先搜索的使用对于解决这类问题非常重要。

更多文章