一个关于二叉树的创建、先序遍历、中序遍历、后序遍历、求叶子节点的完整函数的c语言完整程序。

 2023-09-15 阅读 26 评论 0

摘要:#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); in
#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;
}


版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/58087.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息