二叉树c语言的程序代码.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉树c语言的程序代码

# include stdio.h # include stdlib.h # include malloc.h typedef struct Node{ char data; //定义根结点 struct Node *lchild; //定义左子树 struct Node *rchild; //定义右子树 }Node,*BiTree; int JianShu(BiTree T) { //构造二叉链表表示的二叉树T,按先序遍历输入二 //叉树中结点的值(一个字符),空格字符表示空树. char e; T=(Node *)malloc(sizeof(Node)); //开辟一个以sizeof(Node)为单位的空间 if(!T) //开辟失败 exit (-2); fflush(stdin); //清空缓存 scanf (%c,e); if(e== ) T=NULL; else { T-data=e; // 生成根结点 printf (请输入%c的左孩子:,e); JianShu(T-lchild); // 构造左子树 printf (请输入%c的右孩子:,e); JianShu(T-rchild); // 构造右子树 } return 1; } int DLR_P(BiTree T) { //先序遍历打印二叉树中所有数据 if (T!=NULL) { //非空二叉树 printf (%c ,T-data); //访问T DLR_P(T-lchild); //递归遍历左子树 DLR_P(T-rchild); //递归遍历右子树 } return 1; } int LDR_P(BiTree T) { //中序遍历打印二叉树中所有数据 if (T!=NULL) { //非空二叉树 LDR_P(T-lchild); //递归遍历左子树 printf (%c ,T-data); //访问T LDR_P(T-rchild); //递归遍历右子树 } return 1; } int LRD_P(BiTree T) { //后序遍历打印二叉树中所有数据 if (T!=NULL) { //非空二叉树 LRD_P(T-lchild); //递归遍历左子树 LRD_P(T-rchild); //递归遍历右子树 printf (%c ,T-data); //访问T } return 1; } int DLR_0(BiTree T,int s_0) { //用先序遍历求二叉树T中所有叶子总数 if (T!=NULL) { //非空二叉树 if(!T-lchild!T-rchild) { //判断该结点是否为叶子 s_0++; //是叶子则计数并打印 printf (%c ,T-data); } DLR_0(T-lchild,s_0); //递归遍??左子树,直到叶子处 DLR_0(T-rchild,s_0); //递归遍历右子树,直到叶子处 } return s_0; } int DLR_1(BiTree T,int s_1) { //用先序遍历求二叉树T中所有1度结点总数 if (T!=NULL) { //非空二叉树 if(T-lchild!T-rchild) { //判断该结点是否为1度结点 s_1++; //是1度结点则计数并打印

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档