#include<stdlib.h>
#include<stdio.h>typedef struct bitnode{int date;struct bitnode * lchild, *rchild;
}bitnode,*bitree;
int j=0;
// 函数说明
bitree *createbitree(bitree *T);
int Qtraversebitree(bitree T);
int Ztraversebitree(bitree T);
int Htraversebitree(bitree T);
int Ftraversebitree(bitree T);
/*******************主函数****************************/main()
{bitree Tree,*T ; int k;do {printf("\n ╔-----------------------------------------------╗"); //显示一个简易菜单printf("\n ┆ 先序创建----1 先序遍历------2 ┆");printf("\n ┆ 中序遍历----3 后序遍历------4 ┆");printf("\n ┆ 叶子个数--- 5 退出程序------6 ┆");printf("\n ╚-----------------------------------------------╝\n"); printf("请输入所要进行的操作序号: ");scanf("%d",&k); //接受用户的选择switch(k) //接受用户的函数 {case 1: printf("左右子树为空时用0代替,用间隔符隔开:\n");T=createbitree(&Tree);break;case 2:Qtraversebitree(*T );break;case 3:Ztraversebitree(*T );break;case 4:Htraversebitree(*T );break;case 5:printf("\n叶子个数为: %d\n",Ftraversebitree(*T ));break;case 6:break;default:printf("错误选择!请重选\n");break;}}while(k!=6); //直到i被赋值为6return 0; }
/*******************创建二叉树函数****************************/
bitree *createbitree(bitree *T)
{char ch;scanf("%d",&ch);if(ch==0) (*T)=NULL;else{ if(!((*T) =(bitnode *)malloc(sizeof(bitnode))))exit(0);(*T)->date = ch; //生成根节点 createbitree(&(*T)->lchild);createbitree(&(*T)->rchild);}return T;
}/*******************先序遍历函数****************************/
Qtraversebitree(bitree T)
{ if(T){printf("%d ",T->date);if(Qtraversebitree(T->lchild))if(Qtraversebitree(T->rchild)) return 1;return 0;}else return 1;
}
/*******************中序遍历函数****************************/
Ztraversebitree(bitree T)
{ if(T){if(Ztraversebitree(T->lchild))printf("%d ",T->date);if(Ztraversebitree(T->rchild)) return 1;return 0;}else return 1;
}
/*******************后序遍历函数****************************/
Htraversebitree(bitree T)
{ if(T){if(Htraversebitree(T->lchild))if(Htraversebitree(T->rchild)) printf("%d ",T->date); return 1;return 0;}else return 1;
}/******************返回叶子节点个数函数*************/
Ftraversebitree(bitree T)
{ if(T){if(!((T->lchild)||(T->rchild))) j++; if(Ftraversebitree(T->lchild))if(Ftraversebitree(T->rchild)) return j;return j;}else return j;
}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态