建立下面这样一棵二叉树.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
建立下面这样一棵二叉树

作业3: 这个作业也是上机实验题 试编写程序: (1) 建立下面这样一棵二叉树 (2) 后序遍历这棵二叉树 (3) 按层次遍历 (4) 求叶子数和深度。 (5) 查找値为‘H’的结点,如存在,则打印出’H’的所有祖先。 #includestdio.h #includemalloc.h #define max 100 typedef struct bnode { char data; struct bnode *lchild,*rchild; }Bnode,*BTree; typedef struct { BTree data[max]; int front ; int rear; }queue; char a[]={#,A,B,C,D,#,E,F,#,G,#,#,H,#}; int length=14; BTree Creatree() { char ch; BTree S; ch=getchar(); if(ch==#) { S=NULL; } else { S=(BTree)malloc(sizeof(Bnode)); S-data=ch; S-lchild=Creatree(); S-rchild=Creatree(); } return S; } void Lastree(BTree S) /*后续遍历*/ { if(S) { Lastree(S-lchild); Lastree(S-rchild); printf(%4c,S-data); } } int leafcount(BTree S) /*求叶子数*/ { if(S==NULL) return 0; else { if(!S-rchild!S-lchild) return 1; else return leafcount(S-lchild)+leafcount(S-rchild); } } int depth(BTree S) /*求深度*/ { if(S==NULL) return 0; else { int m=depth(S-lchild); int n=depth(S-rchild); return(mn?m:n)+1; } } void Serch() /*求祖先*/ { char x; int i,y; printf(enter whats you want serch:\n); scanf(%c,x); printf(put out the anster:\n); for(i=0;ilength;i++) { if(x==a[i]) y=i; } while(y/2!=0) { printf(%4c,a[y/2]); y=y/2; } } void CreatQueue(queue *q) { q-front=-1; q-rear=-1; } int EnQueue(queue *q,BTree c) { q-rear++; if(q-rear=max) { printf(queue overflow!\n); return 0; } q-data[q-rear]=c; return 1; } int DeQueue(queue *q,BTree *ret) { if(q-front==q-rear) return 0; q-front++; *ret=q-data[q-front]; return 1; } void Gradation(BTree S) /*层次遍历*/ { queue tq; BTree res; CreatQueue(tq); EnQueue(tq,S); while(DeQueue(tq,res)==1) { if(res) { printf(%4c,res-data); EnQueue(tq,res-lchild); EnQueue(tq,res-rchild); } } } void main() { BTree t; printf(please get a tree(use #end):\n); t=Creatree(); printf( tree Last:\n); Lastree(t); printf(\n); printf(leafs number is %d:\n,leafcount(t)); printf(trees depth is %d:\n,depth(t)); printf(gradation:\n); Gradation(t); printf(\n); fflush(stdin); Serch(); printf(\n); getch(); }

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档