生活中我们常常能够看到树。树枝会有很多分叉,这些分叉会再次分叉等。而我们的二叉树形似这一棵棵树,不过它的每个树杈都是两个。如下图。
今天我们就是实现一下二叉树的基本操作。
在实现之前,我们要理解二叉树的所有操作的核心都是 递归!!!
所以在实现的时候,首先就要想到的思想就是递归思想。
二叉树的遍历方式
二叉树的遍历方式有四种(基于上图):
- 先序遍历:a b d e c f g
- 中序遍历:d b e a f c g
- 后序遍历:d e b f g c a
- 层序遍历:a b c d e f g
实现
首先,我们先定义每个二叉树的节点。
//这里我们用孩子表示法来定义
typedef struct TreeNode{
TreeNodeType data;//数据
struct TreeNode* lchild;//左子树
struct TreeNode* rchild;//右子树
}TreeNode;
初始化二叉树
//初始化
void TreeInit(TreeNode** root)
{
if(root == NULL) {
return;
}
*root = NULL;
}
遍历
//先序
void TreePreOrder(TreeNode* root)
{
if(root == NULL) {
return;//空树
}
pr