关于二叉树,高分!

来源:百度知道 编辑:UC知道 时间:2024/06/13 18:27:13
实现一种二叉树的存储结构,并完成以下操作:建立、查找、计算结点数、求高度、三种遍历方式。
用键盘输入一个字符串,按照满二叉树的特点生成一棵二叉树。要求用递归方法生成该二叉树;二叉树的结点最多有左右两个分支,以固定的顺序,有系统的抽取二叉树中各结点,且每个结点恰好被抽取一次。二叉树的遍历是以递归方式进行的,依递归的调用顺序不同,分别实现先序遍历、中序遍历。在程序中要求不同功能分别用单个的函数实现;以链表方式建立二叉树并以先序遍历二叉树的方式输出结点内容,统计二叉树叶子个数。

此程序包括你的要求,多了个层次遍历,求高度有两个算法
/*
包括二叉树的创建和遍历
*/
//头文件
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
//预定义宏常量
#define OK 1
#define ERROR -1
#define ENDFLAG '#'
typedef char TelemType;
typedef int status;
//二叉树的存储结构
typedef struct BiTNode{
TelemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//全局变量,表示叶子个数
int m=0;
//二叉树的创建
status CreateBiTree(BiTree *T)
{// 先序创建
TelemType ch;
scanf("%c",&ch);
if(ch==ENDFLAG) *T=NULL;
else {
if(!(*T=(BiTNode *)malloc(sizeof(BiTNode))))
{
printf("\nOut of space.");
getch();
exit(0);
}
(*T)->data=ch; //生成根结点
CreateBiTree(&((*T)->lchild));//左子树
CreateBiTree(&((*T)->rchild));//右子树
}
return OK;
}
//先序遍历
status