链式二叉树详解:递归遍历与核心接口实现
一、结构定义
1.1 概念
链式二叉树使用链表结构来表示,每个节点包含数据域和左右指针域。左指针指向左子树根节点,右指针指向右子树根节点。
1.2 基本结构
链式二叉树的节点由三部分构成:存储数据的变量、指向左孩子的指针、指向右孩子的指针。这种结构天然具有递归性:一棵二叉树由根节点、左子树(本身也是二叉树)和右子树(本身也是二叉树)组成。
// 定义链式二叉树的结构
typedef int BTDataType;
typedef struct BinaryTreeNode {
BTDataType data; // 存储数据
struct BinaryTreeNode* left; // 指向左孩子节点
struct BinaryTreeNode* right; // 指向右孩子节点
} BTNode;
二、遍历接口实现
二叉树的操作大多基于递归思想。处理整棵树和处理其子树的方法是一致的。
| 遍历方式 | 描述 |
|---|---|
| 前序遍历 | 根 -> 左 -> 右 |
| 中序遍历 | 左 -> 根 -> 右 |
| 后序遍历 | 左 -> 右 -> 根 |
| 层序遍历 | 按深度从上到下、从左到右访问 |
2.1 前序遍历
思路: 先访问当前节点,再递归遍历左子树,最后递归遍历右子树。若节点为空则返回。
void PreOrder(BTNode* root) {
if (root == NULL) {
printf("NULL ");
return;
}
printf("%c ", root->data);
PreOrder(root->left);
PreOrder(root->right);
}


