二叉树遍历为何如此重要:从递归到Morris的四种实现方式与LeetCode完整通关指南

当你面对一棵表达式树 (1 + 2) * 3 时,不同的遍历顺序会得到完全不同的结果:前序遍历产生前缀表达式 * + 1 2 3,中序遍历还原原始表达式 1 + 2 * 3(需要括号),后序遍历产生后缀表达式 1 2 + 3 *——这正是逆波兰表示法,可以直接用于栈式计算器。这就是二叉树遍历的核心价值:遍历顺序决定了数据的处理方式。 ...

7 min · 3503 words

深度优先与广度优先搜索:从栈与队列的选择到最短路径的博弈

给定一个迷宫,从入口到出口有多条路径。你应该选择哪种策略?一种方式是沿着每条路一直走到底,走不通就返回上一个分叉口换条路——这就是深度优先搜索。另一种方式是先探索所有离入口距离为1的格子,再探索距离为2的格子,层层推进——这就是广度优先搜索。 ...

9 min · 4491 words