欢迎来到天天文库
浏览记录
ID:11295860
大小:23.68 KB
页数:4页
时间:2018-07-11
《二叉树的查找,遍历,(满)节点数,树叶的计算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验课题一:将下图中的二叉树用二叉链表表示:ABCDEFGH1用三种遍历算法遍历该二叉树,给出对应的输出结果;2写一个函数对二叉树搜索,若给出一个结点,根据其是否属于该树,输出true或者false。3写函数完成习题4.31(C++版)或4.28(C版教科书)。#include"stdio.h"#include"stdlib.h"typedefcharElementtype;typedefstructtreenode*Tree;structtreenode{ElementtypeElement;TreeLeft;TreeRight;};voidPre
2、(Treet){if(t!=NULL){printf("%c",t->Element);Pre(t->Left);Pre(t->Right);}}voidAft(Treet){if(t!=NULL){Pre(t->Left);Pre(t->Right);printf("%c",t->Element);}voidMid(Treet){if(t!=NULL){Pre(t->Left);printf("%c",t->Element);Pre(t->Right);}}}Treecreat(Treet){charc;t=(Tree)malloc(sizeof(
3、structtreenode));if((c=getchar())!='#'){t->Element=c;t->Left=Pre();t->Right=Pre();}elset=NULL;returnt;}intcountnode(TreeT){if(T==NULL)return0;elsereturn1+countnode(T->Left)+countnode(T->Right);}intcountleaf(TreeT){if(T==NULL)return0;elseif(T->Left==NULL&&T->Right==NULL)return1;
4、returncountleaf(T->Left)+countleaf(T->Right);}intcountfull(TreeT){if(T==NULL)return0;elsereturn!(T->Left==NULL
5、
6、T->Right==NULL)+countfull(T->Left)+countfull(T->Right);}intFind(TreeT,charc;){intfind;if(!find&&T!=NULL){if(T->Element==c){find=1;}else{Find(T->Left,c);Find(T->Right,
7、c);}}returnfind;}voidmain(){TreeT;charc;T=creat(T);printf("前序遍历为:");Pre(T);printf("");printf("中序遍历为:");Mid(T);printf("");printf("后序遍历为:");Aft(T);printf("");printf("请输入要检测的字符:");scanf("%c",&c);getchar();if(Find(T,c)==1)printf("True该字符在树中!");elseprintf("False该字符不在树中
8、!");printf("树中的节点数为:%d",ountnode(T));printf("树中的树叶数为:%d",ountleaf(T));printf("树中的满节点数为:%d",countfull(T));}
此文档下载收益归作者所有