链式二叉树的递归遍历与常用接口
链式二叉树是讲递归时绕不过去的例子。它的结构很直观:一个节点连着左右孩子,整棵树又由左右子树拼出来。写起来不复杂,但很多接口的思路都藏在这里。用 C 语言看会更清楚,指针怎么连、递归怎么收口,一眼就能对上。
一、链式二叉树的结构定义
1.1 基本概念
链式二叉树用链表的方式表示树形关系。每个节点一般包含三部分:数据域、左孩子指针、右孩子指针。

1.2 递归结构
二叉树的递归味道很重:一棵树由根节点、左子树和右子树组成,而左子树和右子树本身还是二叉树。这个'自己套自己'的结构,正好适合递归处理。
// 定义链式二叉树节点
typedef char BTDataType;
struct BinaryTreeNode {
BTDataType data; // 数据域
struct BinaryTreeNode* left; // 左孩子指针
struct BinaryTreeNode* right; // 右孩子指针
};
二、遍历接口实现
二叉树的遍历是递归最常见的落点。处理整棵树和处理某个子树,本质上是一回事,所以代码通常会写得很短。
| 遍历方式 | 访问顺序 | 简记 |
|---|---|---|
| 前序遍历 | 根 -> 左 -> 右 | 根左右 |
| 中序遍历 | 左 -> 根 -> 右 | 左根右 |
| 后序遍历 | 左 -> 右 -> 根 | 左右根 |


