文章目录
前言
本篇文章将带大家了解二叉树一些功能实现和二叉树的四种遍历方式:前、中、后、层。
接下俩让我们一起来看一下吧~
1.定义二叉树结点
首先我们来定义二叉树的结点,这里使用孩子表示法。孩子表示法是指该结点除了存储本结点的数值之外,还具备指向自己左右孩子的指针。(还有另一种父母孩子表示法,是在孩子表示法的基础上增加了可以指向父母结点的指针)
代码:
typedef struct BTNode
{
BDataType data;
struct BTNode* left;
struct BTNode* right;
}BTNode;
2.创建树
树的创建和前序遍历的思想一样。先创建根节点,再创建左子树,最后创建右子树。
代码实现:
/ index按照值的方式传递的---在递归过程中对index修改之后,不会将修改之后的结果带到上一层中
BTNode* _CrteateBinTree(BDataType array[], int size, int* index, BDataType invalid)
{
BTNode* root = NULL;
if (*index < size && invalid != array[*index])
{
// 创建根节点
root = BuyBinTreeNode(array[*index]);
// 创建根节点的左子树
++(*index);
root->left = _CrteateBinTree(array, size, index, invalid);
// 创建根节点的右子树
++(*index);
root->right = _CrteateBinTree(array, size, index, invalid);
}
return root;
}
BTNode* CrteateBinTree(BDataType array[], int size, BDataType invalid)
{
int index = 0;
return _CrteateBinTree(array, size, &index, invalid);
}
BuyBinTreeNode是获取结点函数,下面介绍创建结点函数