R语言森林生态系统结构、功能与稳定性全流程分析——群落多样性、机器学习、SEM与时间序列建模
2026/1/20 12:59:12
中序遍历(Inorder Traversal)是二叉树三种基本深度优先遍历方式之一(另外两种是前序、后序)。它的核心规则非常简单:
先遍历左子树 → 再访问根节点 → 最后遍历右子树
(简称:左 - 根 - 右)
想象你站在二叉树的根节点,要按顺序“拜访”所有节点:
这个过程天然具有递归性质——每个子树都是一个更小的二叉树,处理逻辑完全相同。
A / \ B C / \ \ D E F中序遍历步骤:
A开始,先遍历左子树(以B为根)B的左子树(D)→ 访问DBB的右子树(E)→ 访问EAC为根)C(C无左子树)C的右子树(F)→ 访问F结果:[D, B, E, A, C, F]
def inorderTraversal(root): if not root: return [] return (inorderTraversal(root.left) + [root.val] + inorderTraversal(root.right))def inorderTraversal(root): result, stack, current = [], [], root while current or stack: # 一路向左,将路径节点入栈 while current: stack.append(current) current = current.left # 弹出栈顶(最左节点),访问它 current = stack.pop() result.append(current.val) # 转向右子树 current = current.right return result表格
| 遍历类型 | 顺序 | 应用场景 |
|---|---|---|
| 中序 | 左 →根→ 右 | BST 升序输出、表达式树求值 |
| 前序 | 根→ 左 → 右 | 复制树、序列化 |
| 后序 | 左 → 右 →根 | 删除树、计算目录大小 |
中序遍历的本质是深度优先探索左分支,回溯时处理根,再探索右分支,这种“分治”思想是树算法的基础。