二叉树-c语言_shilf2008的空间
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct BitNode
{
char data;
struct BitNode * lchild, * rchild;
}* Bitree,BitNode;                                         //数据结点的说明

Bitree createbitree()
{
Bitree T;
char ch;
scanf("%c",&ch);                                   //应该连续输入,因为enter键也是字符
if(ch=='*')  T=NULL;
else
{
T=(Bitree)malloc(sizeof(BitNode));
if(!T) exit(-1);
T->data=ch;
T->lchild=createbitree();
T->rchild=createbitree();
}
return T;
}                                                                    //二叉树的创建 

void visit(Bitree T)
{
if(T)
{
printf("%c ",T->data);
visit(T->lchild);
visit(T->rchild);
}
}                                                                  //中序访问二叉树

int depth(Bitree T)
{
int dep1,dep2;
if(T==NULL)
return(0);
else
{
dep1=depth(T->lchild);
dep2=depth(T->rchild);
if(dep1>dep2)
return(dep1+1);
else
return(dep2+1);
}
}                                                                      //二叉树深度的递归算法

main()
{
Bitree Q;
Q=createbitree();
visit(Q);
printf("\n");
int height;
height=depth(Q);
printf("the height is %d\n",height);
}


------此文件为bit.c------------------------------------


运行情况:
$./bit
abd*g**e*hj*k***c*f*i**
a b d g e h j k c f i
the height is 6
$


总结:a.
1.知道
abd*g**e*hj*k***c*f*i**这样一个被*号分隔的序列
2.知道此序列的构造方式(先序,后序,中序等等)
可以确定这颗二叉树
b.
1.
只知道abdgehjkcfi这样一个连续序列
2.也
知道此序列的构造方式(先序,后序,中序等等)
            不可以确定这颗二叉树,但通过两个不同构造方式的两个不同连续序列就可以确定








郑重声明:资讯 【二叉树-c语言_shilf2008的空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——