二叉链表建立二叉树c语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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");

}

相关文档
最新文档