实验课题一:将下图中的二叉树用二叉链表表示:
A B D F
1 用三种遍历算法遍历该二叉树,给出对应的输出结果;
2 写一个函数对二叉树搜索,若给出一个结点,根据其是否属于该树,输出true或者false。 3 写函数完成习题4.31(C++版)或4.28(C版教科书)。
#include\#include\
typedef char Elementtype; typedef struct treenode *Tree; struct treenode { Elementtype Element; Tree Left; Tree Right; };
void Pre(Tree t) {
if(t!=NULL) { printf(\ Pre(t->Left); Pre(t->Right); } }
void Aft(Tree t) {
if(t!=NULL) { Pre(t->Left); Pre(t->Right); printf(\
G E H C }
void Mid(Tree t) {
if(t!=NULL) { Pre(t->Left); printf(\ Pre(t->Right); } } }
Tree creat(Tree t) { char c; t=(Tree)malloc(sizeof(struct treenode)); if((c=getchar())!='#') { t->Element=c; t->Left=Pre(); t->Right=Pre(); } else t=NULL; return t; }
int countnode(Tree T) { if(T==NULL) return 0; else return 1+countnode(T->Left)+countnode(T->Right); }
int countleaf(Tree T) { if(T==NULL) return 0; else if(T->Left==NULL&&T->Right==NULL) return 1; return countleaf(T->Left)+countleaf(T->Right);
}
int countfull(Tree T) { if(T==NULL) return 0; else return!(T->Left==NULL||T->Right==NULL)+countfull(T->Left)+countfull(T->Right); }
int Find(Tree T,char c;) { int find;
if(!find&&T!=NULL) { if(T->Element==c) { find=1; } else { Find(T->Left,c); Find(T->Right,c); } } return find; }
void main() { Tree T; char c; T=creat(T); printf(\前序遍历为:\\n\ Pre(T); printf(\ printf(\中序遍历为:\\n\ Mid(T); printf(\ printf(\后序遍历为:\\n\ Aft(T); printf(\ printf(\请输入要检测的字符:\ scanf(\ getchar(); if(Find(T,c)==1) printf(\该字符在树中!\\n\ else
printf(\该字符不在树中!\\n\
printf(\树中的节点数为:%d\\n\ printf(\树中的树叶数为:%d\\n\ printf(\树中的满节点数为:%d\\n\}
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库二叉树的查找,遍历,(满)节点数,树叶的计算在线全文阅读。
相关推荐: