正文
二叉树的深度优先搜索(DFS)递归写法是最直观的,其本质是利用了系统的函数调用栈。
算法模板
1 | class TreeNode(var value: Int) { |
使用说明
三种遍历顺序:
- 先序:常用于复制二叉树、序列化二叉树。
- 中序:二叉搜索树(BST)的中序遍历是有序序列。
- 后序:常用于计算二叉树的高度、删除二叉树。
核心优势:
- 逻辑极其简单,符合人类直觉。
- 代码量极少,易于实现。
性能分析:
- 时间复杂度:$O(N)$,每个节点访问一次。
- 空间复杂度:$O(H)$,其中 $H$ 是树的高度。最坏情况下(倾斜树)为 $O(N)$。
注意点:
- 递归必须有明确的终止条件(通常是
root == null)。 - 如果树的深度极大,可能会导致
StackOverflowError(栈溢出),此时需考虑迭代写法。
- 递归必须有明确的终止条件(通常是