实验四二叉树的建立与遍历.doc

实验四二叉树的建立与遍历.doc

ID:59278701

大小:123.50 KB

页数:7页

时间:2020-09-07

实验四二叉树的建立与遍历.doc_第1页
实验四二叉树的建立与遍历.doc_第2页
实验四二叉树的建立与遍历.doc_第3页
实验四二叉树的建立与遍历.doc_第4页
实验四二叉树的建立与遍历.doc_第5页
资源描述:

《实验四二叉树的建立与遍历.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、..实验四二叉树的建立与遍历【实验目的】l掌握二叉树的定义、性质及存储方式,各种遍历算法。【实验内容】1.采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序遍历的递归操作。2.分别求所有叶子结点及结点总数的操作。提示:设计一颗二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针),如ABD###CE##F##,建立二叉树,求出先序、中序和后序遍历序列,求所有叶子及结点总数。【程序源代码】#include#includetypedefcharTElemType;typed

2、efintStatus;#defineOK1#defineERROR0#defineOVERFLOW0typedefstructBiTNode{TElemTypedata;structBiTNode*lchild,*rchild;}BiTNode,*BiTree;StatusCreateBiTree(BiTree&BT);voidCountLeaves(BiTreeBT,int&count);intNodeCount(BiTreeBT);voidPreOrder(BiTreeBT);voidInOrder(BiTreeBT

3、);voidPostOrder(BiTreeBT);intmain(){BiTreeBT;a..intchoice,cho;intlogo=1;printf("输入二叉树结点,以'#'为空指针");CreateBiTree(BT);do{printf("t1:遍历二叉树");printf("t2:二叉树总结点数及叶子节点数");printf("t3:退出程序");printf("t输入选项:");scanf("%2d",&choice);switch(choice){case1:printf("1:

4、先序遍历");printf("2:中序遍历");printf("3:后序遍历");scanf("%2d",&cho);switch(cho){case1:PreOrder(BT);printf("");break;case2:InOrder(BT);printf("");break;case3:a..PostOrder(BT);printf("");break;default:printf("输入错误!");}break;case2:intcount;printf("总结点数为:%2d",N

5、odeCount(BT));CountLeaves(BT,count);printf("叶子结点数为:%2d",count);break;case3:exit(0);break;default:printf("输入错误!");}}while(logo==1);return0;}StatusCreateBiTree(BiTree&BT){charch;scanf("%c",&ch);a..if(ch=='#')BT=NULL;else{if(!(BT=(BiTree)malloc(sizeof(BiTNode))))

6、exit(OVERFLOW);BT->data=ch;CreateBiTree(BT->lchild);CreateBiTree(BT->rchild);}returnOK;}voidPreOrder(BiTreeBT){if(BT!=NULL){printf("%c",BT->data);PreOrder(BT->lchild);PreOrder(BT->rchild);}}voidInOrder(BiTreeBT){if(BT!=NULL){PreOrder(BT->lchild);printf("%c",BT->da

7、ta);PreOrder(BT->rchild);a..}}voidPostOrder(BiTreeBT){if(BT!=NULL){PreOrder(BT->lchild);PreOrder(BT->rchild);printf("%c",BT->data);}}voidCountLeaves(BiTreeBT,int&count){if(BT){if(!BT->lchild&&!BT->rchild)count++;CountLeaves(BT->lchild,count);CountLeaves(BT->rchild

8、,count);}}intNodeCount(BiTreeBT)//统计总结点数{if(BT==NULL)return0;elsea..return(NodeCount(BT->lchild)+NodeCount(BT->rchild)+1);}【运行结果分析】a..【实验收获与心得】在本次实验中,我对

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

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

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