二叉树
认识二叉树
在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。
在该图中,用’#’表示空节点,我们真正要创建的树为有ABCD字符。
先序遍历的方式创建二叉树
int creatBitree(struct Bitnode *(*T))
{
char data;
// data = getchar();
scanf("%c",&data); //输入你要建立的树
if(data == '#') //用'#'标志是空节点
{
*T = NULL; //当出现'#'时,返回上一层函数,该分支创建完成
return 0;
}
else
{
*T = (struct Bitnode *)malloc(LEN); //申请空间
if(T == NULL)
{
printf("申请空间失败\n");
return 0;
}
else
{
(*T)->data = data; //把输入的数据,存储到树的相应节点中
creatBitree(&((*T)->lchild));//创建左子树
creatBitree(&((*T)->rchild));//创建右子树
}
}
}
二叉树的遍历
遍历即将树的所有结点访问且仅访问一次。按照根节点位置的不同分为先序遍历,中序遍历,后序遍历。
先序遍历:根节点->左子树->右子树
中序遍历:左子树->根节点->右子树
后序遍历:左子树->右子树->根节点
如上图的二叉树:
先序遍历:ABCD
中序遍历:BACD
后续遍历:BDCA
先序遍历
void preBitree(struct Bitnode *T)
{
if(T == NULL)
{
return;//return不带参数返回时直接返回上一层函数
}
else
{
printf("%c", T->data);//打印树中的节点数据
preBi