二叉链表建立二叉树c语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;//×óÓÒº¢×ÓÖ¸Õë
}BiTNode,*BiTree;
BiTree CreateBiTree(BiTree &T){ //ÏÈÐò±éÀú½¨Á¢¶þ²æÊ÷ char ch;
scanf("%c",&ch);
if(ch=='#') T=NULL;
else {
T=(BiTree)malloc(sizeof(BiTNode));
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return T;
}
void PreOrderTraverse(BiTree &T){ //ÏÈÐò±éÀú
if(T!=NULL)
{
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void InOrderTraverse(BiTree &T){ // ÖÐÐò±éÀú
if(T!=NULL)
{
InOrderTraverse(T->lchild);
printf("%c",T->data);
InOrderTraverse(T->rchild);
}
}
void PostOrderTraverse(BiTree &T){ //ºóÐò±éÀú
if(T!=NULL)
{
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c",T->data);
}
}
int TreeDepth(BiTree &T){ //Çó¶þ²æÊ÷µÄÉî¶È int lH=0;
int rH=0;
if(T==NULL) return 0;
else{
lH=TreeDepth(T->lchild);
rH=TreeDepth(T->rchild);
if(lH>rH) return lH+1; //¼ÓÉϸù½áµã else return rH+1; //¼ÓÉϸù½áµã
}
}
int main(){
BiTree T=NULL;
printf("ÇëÊäÈë¶þ²æÊ÷ÖÐÔªËØ£º\n");
T=CreateBiTree(T);
printf("ÏÈÐò±éÀú\n");
PreOrderTraverse(T);
printf("\n");
printf("ÖÐÐò±éÀú\n");
InOrderTraverse(T);
printf("\n");
printf("ºóÐò±éÀú\n");
PostOrderTraverse(T);
printf("\n");
printf("¶þ²æÊ÷µÄÉî¶È£º");
int H=TreeDepth(T);
printf("%d",H);
system("pause");
}