建立二叉树,并对树进行操作(数据结构),该如何解决
建立二叉树,并对树进行操作(数据结构)
题目:
建立二叉树,并对树进行操作
基本功能要求:
a) 利用完全二叉树的性质建立一棵二叉树。
b) 统计数叶子结点的个数。
c) 求二叉树的深度。
#include "stdlib.h " /* 存储分配头文件,或用 "malloc.h " */
#include "stdio.h " /* 标准I/O头文件 */
#include "ctype.h "
#define N 10000 /* 定义NULL,本行可省去 */
#define LENG sizeof(struct Bnode) /* 确定结点所占空间的字节数 */
typedef char ElemType; /* 抽象元素类型为char类型 */
typedef struct Bnode /* Bnode为结点(C结构体)类型 */
{ ElemType data; /* data为抽象元素类型 */
struct Bnode *lchild, *rchild; /* 为指针类型 */
signed size;
}Bnode;
int node[4] ;
int creat_tree(Bnode**root ) /* root是指向指针的指针类型 */
{ /* 本算法递归生成二叉树 */
ElemType ch;
scanf( "%c ",&ch); /* 输入结点,字符型 */
if (ch== ' '){ (*root)-> data=NULL;
return;} /* 生成空二叉树 */
else /* 生成非空二叉树 */
{ (*root)=(Bnode*)malloc(LENG); /* 申请结点空间 */
(*root)-> data=ch; /* 生成根结点 */
creat_tree(&(*root)-> lchild); /* 递归生成左子树 */
creat_tree(&(*root)-> rchild); /* 递归生成右子树 */
题目:
建立二叉树,并对树进行操作
基本功能要求:
a) 利用完全二叉树的性质建立一棵二叉树。
b) 统计数叶子结点的个数。
c) 求二叉树的深度。
#include "stdlib.h " /* 存储分配头文件,或用 "malloc.h " */
#include "stdio.h " /* 标准I/O头文件 */
#include "ctype.h "
#define N 10000 /* 定义NULL,本行可省去 */
#define LENG sizeof(struct Bnode) /* 确定结点所占空间的字节数 */
typedef char ElemType; /* 抽象元素类型为char类型 */
typedef struct Bnode /* Bnode为结点(C结构体)类型 */
{ ElemType data; /* data为抽象元素类型 */
struct Bnode *lchild, *rchild; /* 为指针类型 */
signed size;
}Bnode;
int node[4] ;
int creat_tree(Bnode**root ) /* root是指向指针的指针类型 */
{ /* 本算法递归生成二叉树 */
ElemType ch;
scanf( "%c ",&ch); /* 输入结点,字符型 */
if (ch== ' '){ (*root)-> data=NULL;
return;} /* 生成空二叉树 */
else /* 生成非空二叉树 */
{ (*root)=(Bnode*)malloc(LENG); /* 申请结点空间 */
(*root)-> data=ch; /* 生成根结点 */
creat_tree(&(*root)-> lchild); /* 递归生成左子树 */
creat_tree(&(*root)-> rchild); /* 递归生成右子树 */