核心认知
二叉树不是线性结构,而是层级结构。 它最重要的特点是:每个节点最多只有两个孩子。 这会自然引出两种思维方式:- 遍历
- 递归
二叉树节点长什么样
最基础的节点一般包含三个字段:- 当前值
- 左孩子
- 右孩子
为什么二叉树题适合递归
因为二叉树天然具备相同子结构。 如果你能处理一棵树,你通常也能用同样的方法处理它的左子树和右子树。所以递归函数通常只需要想清楚三件事:- 参数是什么
- 返回值是什么
- 单层逻辑是什么
最基础的遍历
二叉树最经典的内容是遍历。 深度优先遍历有三种:- 前序遍历
- 中序遍历
- 后序遍历
- 层序遍历
一个最经典的 Python 例子
前序遍历是最容易帮助你建立递归直觉的例子。- 递归终止条件
- 当前节点处理
- 左右子树递归
常见题型
二叉树题通常会围绕这些方向展开:- 遍历类
- 深度和高度
- 路径问题
- 构造问题
- 二叉搜索树
- 最近公共祖先
二叉树和二叉搜索树的区别
二叉树只要求结构。 二叉搜索树则还要求数值关系:- 左子树都比根小
- 右子树都比根大
学习建议
如果你刚开始刷二叉树,建议按这个顺序来:- 前中后序遍历
- 层序遍历
- 最大深度
- 翻转二叉树
- 路径总和
- 二叉搜索树基础题

