二叉树的建立及凹入表打印优质资料.doc
上传人:天马****23 上传时间:2024-09-10 格式:DOC 页数:55 大小:1.7MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

二叉树的建立及凹入表打印优质资料.doc

二叉树的建立及凹入表打印优质资料.doc

预览

免费试读已结束,剩余 45 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

二叉树的建立及凹入表打印优质资料(可以直接使用,可编辑优质资料,欢迎下载)先序递归建立二叉树班级2021211313姓名:胡卓学号:2021211468姓名:郭志刚学号:2021211475分工情况:郭志刚BiTreeCreateBiTree(BiTree&T)//先序递归创建二叉树intmain()胡卓voidPrint(BiTree&T,intt)intLEAF(BiTree&T)//计算叶子节点完成日期:2021-11-6问题描述:1)用先序递归过程建立二叉树(存储结构:二叉链表)输入数据按先序遍历所得序列输入,当某结点左子树或右子树为空时,输入‘*’号,如输入abc**d**e**得到的二叉树为:eadbc(选做:由二叉树的先序序列和中序序列建立一棵二叉树。)2)编写递归算法,计算二叉树中叶子结点的数目。3)按凹入表方式输出该二叉树。算法思想:定义二叉树的数据结构类型typedefstructBiTNode//{chardata;structBiTNode*lchild,*rchild;//左右子树}BiTNode,*BiTree;1.先序递归创建二叉树BiTreeCreateBiTree(BiTree&T){T=(BiTree)malloc(sizeof(BiTNode));T->data='\0';charch;scanf("%c",&ch);if(ch!='*'){T->data=ch;T->lchild=CreateBiTree(T->lchild);T->rchild=CreateBiTree(T->rchild);}elseif(ch=='*')returnNULL;if((T->lchild==NULL&&T->rchild==NULL)||(T->lchild==NULL&&T->rchild->data!='\0')||(T->lchild->data!='\0'&&T->rchild==NULL)||(T->lchild->data!='\0'&&T->rchild->data!='\0'))returnT;}计算叶子节点intLEAF(BiTree&T){if(T->lchild==NULL&&T->rchild==NULL)return1;elseif(T->lchild==NULL&&T->rchild->data!='\0')returnLEAF(T->rchild);elseif(T->lchild->data!='\0'&&T->rchild==NULL)returnLEAF(T->lchild);elsereturn(LEAF(T->lchild)+LEAF(T->rchild));}3.凹入表打印二叉树voidPrint(BiTree&T,intt){inti;if(T){Print(T->rchild,t+5);for(i=0;i<t;i++){printf("");}printf("%5c\n",T->data);Print(T->lchild,t+5);}}4.主函数intmain(){BiTreeT;printf("*******************************************\n");printf("****************欢迎打印二叉树*************\n");printf("*******************************************\n");printf("请按先序遍历所得数据输入(当某节点是叶子节点时用'*'表示):\n");T=CreateBiTree(T);printf("叶子节点的个数是:");printf("%d\n",LEAF(T));printf("打印该二叉树结构后的结果为:\n");Print(T,5);system("pause");}设计描述:源程序:#include<stdio.h>#include<stdlib.h>#include<malloc.h>#defineMaxsize100#defineOVERFLOW-1#defineERROR0intpi=0;typedefstructBiTNode//定义二叉树的数据结构类型{chardata;structBiTNode*lchild,*rchild;//左右子树}BiTNode,*BiTree;BiTreeCreateBiTree(BiTree&T)//先序递归创建二叉树{T=(BiTree)malloc(sizeof