一、定义
二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree),其存储结构为链式存储,如下图所示。
代码实现
typedef char BTDataType;//下面要实现的例子中存储的数据为char型
typedef struct BinaryTreeNode
{
BTDataType _data; //存储此节点的数据
struct BinaryTreeNode* lchild; //存储左孩子的地址
struct BinaryTreeNode* rchild; //存储右孩子的地址
}BTNode;
BTNode* BinaryTreeCreate(BTDataType* src);
//通过前序遍历的数组"ABDG##H#J###CE##FI###"构建二叉树
{
static int s_n = 0;//定义静态变量记录数组下标
if(src[s_n]=='#')//
{
s_n++;//下标+1,递归进入直接访问下一个
return NULL;
}
BTNode* cur = (BTNode*)malloc(sizeof(BTNode));
cur->_data = src[s_n];
s_n++;//下标+1,递归进入直接访问下一个
cur->lchild = BinaryTreeCreate(src);//左右孩子递归访问
cur->rchild = BinaryTreeCreate(src);
return cur;
}
void BinaryTreeDestory(BTNode* root)//销毁二叉树
{
if (root != NULL)
{
BinaryTreePostOrder(root->lchild);
BinaryTreePostOrder(root->rchild);
free(root);
}
}