数据结构——二叉树遍历、深度、叶子节点数计算
来源:互联网 发布:单片机概念 术语 编辑:程序博客网 时间:2024/05/16 09:31
效果如下:
其中“#”代表空节点
/*数据结构——二叉树*/
#define StACK_INIt_SIZE 100 //存储空间初始分配量
#define StACKNCREMENt 50 //存储空间分配增量#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n;
typedef char telemtype;
typedef struct bitnode
{
telemtype data;
struct bitnode *lchild,*rchild;
}binode,*bitree;
int createbitree(bitree &t);//创建二叉树
void preordertraverse(bitree t);//先序遍历
void inordertraverse(bitree t);//中序遍历
void postordertraverse(bitree t);//后序遍历
int depth(bitree t);//求二叉树深度
int leaf(bitree t);//求二叉树叶子节点数
int main()
{
int j,M,x;
bitree t;
printf("请输入:\n");
createbitree(t) ;
printf("先序遍历的结果是:");
preordertraverse(t);
printf("\n");
printf("中序遍历的结果是:");
inordertraverse(t);
printf("\n");
printf("后序遍历的结果是:");
postordertraverse(t);
printf("\n");
printf("叶子节点数是:");
x=leaf(t);
printf("%d\n",x);
M=depth(t);
printf("二叉树的深度是:");printf("%d\n",M);
return 0;
}
// 按先序次序输入二叉树中结点的值(一个字符),“#”字符表示空树,
// 构造二叉链表表示的二叉树T。
int createbitree(bitree &t)
{
char ch;
scanf("%c",&ch);
if(ch=='#') t=NULL;
else
{
if(!(t=(bitnode*)malloc(sizeof(bitnode)))) exit(0);
t->data=ch;
createbitree(t->lchild);
createbitree(t->rchild);
}
return 0;
}
void preordertraverse(bitree t)
{
if(t)
{
printf("%c",t->data);
preordertraverse(t->lchild);
preordertraverse(t->rchild);
}
}
void inordertraverse(bitree t)
{
if(t)
{
inordertraverse(t->lchild);
printf("%c",t->data);
inordertraverse(t->rchild);
}
}
void postordertraverse(bitree t)
{
if(t)
{
postordertraverse(t->lchild);
postordertraverse(t->rchild);
printf("%c",t->data);
}
}
int leaf(bitree t)
{
//int n=0;
if(t)
{
if(t->lchild==NULL&&t->rchild==NULL)
n=n+1;
leaf(t->lchild);
leaf(t->rchild);
}
return n;
}
int depth(bitree t)
{
int dep1,dep2;
if(t==NULL)
return 0;
else
{
dep1=depth(t->lchild);
dep2=depth(t->rchild);
if(dep1>=dep2)
return (dep1+1);
else
return (dep2+1);
}
}
0 0
- 数据结构——二叉树遍历、深度、叶子节点数计算
- 基本数据结构——二叉树的建立,遍历,求叶子节点,深度计算
- 二叉树的创建、遍历、深度、叶子节点数
- 【数据结构】二叉树的实现(如:默认成员函数、(叶子)节点数、深度、四种遍历)
- 计算二叉树的高度、节点数、叶子节点数
- 二叉树的字符串创建和遍历,求深度,叶子节点数
- 二叉树的创建、遍历、深度、叶子节点个数
- C语言二叉树创建、遍历、深度、叶子节点
- 二叉树的遍历 深度 与叶子节点
- 数据结构--二叉树的创建、先序遍历、中序遍历、后序遍历、深度、叶子结点数
- 二叉树的深度和叶子节点数
- 二叉树创建、三种遍历、叶子节点数
- 数据结构树求深度和叶子节点数
- 二叉树练习——建树+叶子数+深度
- 八.二叉树各种操作的C语言实现 深度遍历求深度,广度遍历求深度,交换左右子树,求叶子节点数
- 递归遍历 二叉树 求高度 和 节点数 和 叶子节点数
- Java二叉树的递归,非递归遍历,高度,节点数,叶子节点数
- Java二叉树的递归,非递归遍历,高度,节点数,叶子节点数
- EJB学习笔记一(EJB概述)
- CSDN第一天-学习MarkDown
- ROS学习--(八)使用rqt控制台和roslaunch
- Eclipse中设置换行
- iOS 设计模式系列:Decorator – 装饰器模式
- 数据结构——二叉树遍历、深度、叶子节点数计算
- 九度oj 1040
- 严重: Error filterStart
- hadoop之MapReduce调用R的一次失败的总结~(续五)
- Spring IOC容器
- MediaPlayer类介绍-----继承自object
- HDU 1247 Hat’s Words
- Java基础10——GUI
- ontainer_of()宏