假设二叉树采用二叉链存储结构存储

假设二叉树采用二叉链存储结构存储

ID:69506731

大小:79.00 KB

页数:13页

时间:2021-11-06

假设二叉树采用二叉链存储结构存储_第1页
假设二叉树采用二叉链存储结构存储_第2页
假设二叉树采用二叉链存储结构存储_第3页
假设二叉树采用二叉链存储结构存储_第4页
假设二叉树采用二叉链存储结构存储_第5页
假设二叉树采用二叉链存储结构存储_第6页
假设二叉树采用二叉链存储结构存储_第7页
假设二叉树采用二叉链存储结构存储_第8页
假设二叉树采用二叉链存储结构存储_第9页
假设二叉树采用二叉链存储结构存储_第10页
资源描述:

《假设二叉树采用二叉链存储结构存储》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.-假设二叉树采用二叉链存储构造存储,分别实现以下算法,并在程序中完成测试: 〔1〕计算二叉树节点个数;〔2〕输出所有叶子节点; 〔3〕求二叉树b的叶子节点个数;〔4〕求二叉树b的宽度 #include#include#defineMaxSize100typedefcharElemType;typedefstructnode{ElemTypedata;//数据元素structnode*lchild;//指向左孩子structnode*rchild;//指向右孩子}BTNode;voidCreateBTNode(BTNode*&b,char*

2、str);//由str串创立二叉链BTNode*FindNode(BTNode*b,ElemTypex);//返回data域为x的节点指针BTNode*LchildNode(BTNode*p);//返回*p节点的左孩子节点指针BTNode*RchildNode(BTNode*p);//返回*p节点的右孩子节点指针intBTNodeDepth(BTNode*b);//求二叉树b的深度voidDispBTNode(BTNode*b);//以括号表示法输出二叉树voidDestroyBTNode(BTNode*&b);//销毁二叉树-.word.zl.-voidLevelOrder(

3、BTNode*b){BTNode*p;BTNode*qu[MaxSize];//定义环形队列,存放节点指针intfront,rear;//定义队头和队尾指针front=rear=-1;//置队列为空队列rear++;qu[rear]=b;//根节点指针进入队列while(front!=rear)//队列不为空{front=(front+1)%MaxSize;p=qu[front];//队头出队列printf("%c",p->data);//访问节点if(p->lchild!=NULL)//有左孩子时将其进队{rear=(rear+1)%MaxSize;qu[rear]=p->l

4、child;}if(p->rchild!=NULL)//有右孩子时将其进队{rear=(rear+1)%MaxSize;qu[rear]=p->rchild;-.word.zl.-}}}voidCreateBTNode(BTNode*&b,char*str)//由str串创立二叉链{BTNode*St[MaxSize],*p=NULL;inttop=-1,k,j=0;charch;b=NULL;//建立的二叉树初始时为空ch=str[j];while(ch!='')//str未扫描完时循环{switch(ch){case'(':top++;St[top]=p;k=1;bre

5、ak;//为左节点case')':-.word.zl.-top--;break;case',':k=2;break;//为右节点default:p=(BTNode*)malloc(sizeof(BTNode));p->data=ch;p->lchild=p->rchild=NULL;if(b==NULL)//p指向二叉树的根节点b=p;else//已建立二叉树根节点{switch(k){case1:St[top]->lchild=p;break;case2:St[top]->rchild=p;break;}-.word.zl.-}}j++;ch=str[j];}}BTNode*

6、FindNode(BTNode*b,ElemTypex)//返回data域为x的节点指针{BTNode*p;if(b==NULL)returnNULL;elseif(b->data==x)returnb;else{p=FindNode(b->lchild,x);if(p!=NULL)returnp;elsereturnFindNode(b->rchild,x);}}-.word.zl.-BTNode*LchildNode(BTNode*p)//返回*p节点的左孩子节点指针{returnp->lchild;}BTNode*RchildNode(BTNode*p)//返回*p节点的

7、右孩子节点指针{returnp->rchild;}intBTNodeDepth(BTNode*b)//求二叉树b的深度{intlchilddep,rchilddep;if(b==NULL)return(0);//空树的高度为0else{lchilddep=BTNodeDepth(b->lchild);//求左子树的高度为lchilddeprchilddep=BTNodeDepth(b->rchild);//求右子树的高度为rchilddepreturn(lchilddep>rchilddep

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。