实验五--二叉树的存储结构和基本操作.doc

实验五--二叉树的存储结构和基本操作.doc

ID:59189693

大小:25.50 KB

页数:6页

时间:2020-10-30

实验五--二叉树的存储结构和基本操作.doc_第1页
实验五--二叉树的存储结构和基本操作.doc_第2页
实验五--二叉树的存储结构和基本操作.doc_第3页
实验五--二叉树的存储结构和基本操作.doc_第4页
实验五--二叉树的存储结构和基本操作.doc_第5页
资源描述:

《实验五--二叉树的存储结构和基本操作.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验五二叉树的存储表示和基本操作实验内容1.二叉树的二叉链表的存储结构—————二叉树的二叉链表存储表示————————typedefstructnode{ElemTypedata;/*数据元素*/structnode*lchild;/*指向左孩子*/structnode*rchild;/*指向右孩子*/}BTNode;2.二叉树的基本操作(1)创建操作:创建一棵二叉树。(2)查找操作:查找二叉树中值为x的结点。(3)查找左孩子操作:查找二叉树中值为x的结点的左孩子。(4)查找右孩子操作:查找二叉树中值为x的结点的右孩子。(5)求深度操作:求二叉树的深度。(6)求宽度操作:求二

2、叉树的宽度。(7)求结点个数操作:求二叉树的结点个数。(8)求叶子结点个数操作:求二叉树的叶子结点个数。(9)输出操作:以括号表示法输出二叉树。3.链式队列操作实现的步骤(1)实现将链式队列的存储结构和基本操作程序代码。(2)实现main主函数。4.程序代码完整清单#include#include#defineMaxSize100typedefcharElemType;typedefstructnode{ElemTypedata;/*数据元素*/structnode*lchild;/*指向左孩子*/structnode*rchild;/*指

3、向右孩子*/}BTNode;//基本操作函数声明voidCreateBTNode(BTNode*&b,char*str);/*创建一棵二叉树*/BTNode*FindNode(BTNode*b,ElemTypex);/*查找二叉树的结点*/BTNode*LchildNode(BTNode*p);/*查找二叉树结点的左孩子*/BTNode*RchildNode(BTNode*p);/*查找二叉树结点的右孩子*/intBTNodeDepth(BTNode*b);/*求二叉树的深度*/voidDispBTNode(BTNode*b);/*输出二叉树*/intBTWidth(BTNod

4、e*b);/*求二叉树的宽度*/intNodes(BTNode*b);/*求二叉树结点个数*/intLeafNodes(BTNode*b);/*求二叉树叶子结点个数*/voidmain(){BTNode*b,*p,*lp,*rp;;CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");printf("");printf("(1)输出二叉树:");DispBTNode(b);printf("");printf("(2)'H'结点:");p=FindNode(b,'H');if(p!=NULL){lp=LchildN

5、ode(p);if(lp!=NULL)printf("左孩子为%c",lp->data);elseprintf("无左孩子");rp=RchildNode(p);if(rp!=NULL)printf("右孩子为%c",rp->data);elseprintf("无右孩子");}printf("");printf("(3)二叉树b的深度:%d",BTNodeDepth(b));printf("(4)二叉树b的宽度:%d",BTWidth(b));printf("(5)二叉树b的结点个数:%d",Nodes(b));printf("(6)二叉树b的叶子结点个数:%d

6、",LeafNodes(b));printf("");}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;break;/*为左结点*/case')':top--;break;case',':k=2;break;/*为右结点

7、*/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;}}}j++;ch=str[j];}}BTNode*FindNode(BTNode*b,ElemTyp

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

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

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