简单的二叉树创建及其基本的运算(C语言)
来源:互联网 发布:中国历史延续 知乎 编辑:程序博客网 时间:2024/04/30 08:26
/*
本程序采用的是递归调用算法,操作简单,理解较难
采用的是c++的书写风格,但并不是c++类的思想,使用的认为C语言的编程思想
*/
#include<iostream>
using namespace std;
typedef char elementType;
typedef struct BLNode
{
elementType data;
struct BLNode *lchild;
struct BLNode *rchild;
}BiNode,*BiTree;
void creat(BiTree &T)//创建
{
char ch;
cin>>ch;
if(ch=='/')
T=NULL;
else
{
T=new BiNode;
T->data=ch;
creat(T->lchild);
creat(T->rchild);
}
}
void protrave(BiTree T)//先序
{
if(T)
{
cout<<T->data;
protrave(T->lchild);
protrave(T->rchild);
}
}
void midtrave(BiTree T)//中序
{
if(T)
{
midtrave(T->lchild);
cout<<T->data;
midtrave(T->rchild);
}
}
void lasttrave(BiTree T)//后序
{
if(T)
{
lasttrave(T->lchild);
lasttrave(T->rchild);
cout<<T->data;
}
}
int H;//全局变量
int heigth(BiTree T)//树高
{
int Hl,Hr;
if(T==NULL)//或者写成 if(!T)
return 0;
else
{
Hl=heigth(T->lchild);
Hr=heigth(T->rchild);
H=Hl>Hr?Hl+1:Hr+1;
}
return H;
}
int n;
void countleaf(BiTree T)//叶子节点数
{
if(T)
{
if(!T->lchild&&!T->rchild)
n++;
countleaf(T->lchild);
countleaf(T->rchild);
}
}
int main(void)
{
BiTree T;
cout<<"创建一个二叉树:";
creat(T);
cout<<"**********遍历算法(递归)***********"<<endl;
cout<<"先序遍历:";
protrave(T);
cout<<endl;
cout<<"中序遍历:";
midtrave(T);
cout<<endl;
cout<<"后序遍历:";
lasttrave(T);
cout<<endl;
heigth(T);
cout<<"二叉树的高度:"<<H;
cout<<endl;
countleaf(T);
cout<<"二叉树的叶子节点数:"<<n;
cout<<endl;
return 0;
}
本程序采用的是递归调用算法,操作简单,理解较难
采用的是c++的书写风格,但并不是c++类的思想,使用的认为C语言的编程思想
*/
#include<iostream>
using namespace std;
typedef char elementType;
typedef struct BLNode
{
elementType data;
struct BLNode *lchild;
struct BLNode *rchild;
}BiNode,*BiTree;
void creat(BiTree &T)//创建
{
char ch;
cin>>ch;
if(ch=='/')
T=NULL;
else
{
T=new BiNode;
T->data=ch;
creat(T->lchild);
creat(T->rchild);
}
}
void protrave(BiTree T)//先序
{
if(T)
{
cout<<T->data;
protrave(T->lchild);
protrave(T->rchild);
}
}
void midtrave(BiTree T)//中序
{
if(T)
{
midtrave(T->lchild);
cout<<T->data;
midtrave(T->rchild);
}
}
void lasttrave(BiTree T)//后序
{
if(T)
{
lasttrave(T->lchild);
lasttrave(T->rchild);
cout<<T->data;
}
}
int H;//全局变量
int heigth(BiTree T)//树高
{
int Hl,Hr;
if(T==NULL)//或者写成 if(!T)
return 0;
else
{
Hl=heigth(T->lchild);
Hr=heigth(T->rchild);
H=Hl>Hr?Hl+1:Hr+1;
}
return H;
}
int n;
void countleaf(BiTree T)//叶子节点数
{
if(T)
{
if(!T->lchild&&!T->rchild)
n++;
countleaf(T->lchild);
countleaf(T->rchild);
}
}
int main(void)
{
BiTree T;
cout<<"创建一个二叉树:";
creat(T);
cout<<"**********遍历算法(递归)***********"<<endl;
cout<<"先序遍历:";
protrave(T);
cout<<endl;
cout<<"中序遍历:";
midtrave(T);
cout<<endl;
cout<<"后序遍历:";
lasttrave(T);
cout<<endl;
heigth(T);
cout<<"二叉树的高度:"<<H;
cout<<endl;
countleaf(T);
cout<<"二叉树的叶子节点数:"<<n;
cout<<endl;
return 0;
}
0 0
- 简单的二叉树创建及其基本的运算(C语言)
- 二叉树的创建及其简单应用
- 二叉树的基本运算及其实现的例程
- 第十周:二叉树的基本运算及其实现
- 二叉树的几种基本操作及其讲解 C语言
- c语言的二叉树的创建
- C语言二叉树的基本操作
- 二叉树的基本操作 C语言
- c 语言的基本运算
- C语言的基本运算
- C语言二叉树的创建
- 二叉树的基本运算
- 二叉树的基本运算
- 二叉树的基本运算
- 二叉树的基本运算
- c语言实现的简单二叉树
- c语言简单创建二叉树
- c语言的运算符及其优先级
- 黑马程序员---集合框架(一)
- 数据结构例程——图的邻接矩阵存储结构及算法
- Java 8中的增强的Arrays
- 《剑指offer》——斐波那契数列
- 从系统角度看分布式系统的挑战
- 简单的二叉树创建及其基本的运算(C语言)
- OpenCV中IplImage图像格式与BYTE图像数据的转换
- Android录音播放工具类,仿微信语音聊天。
- mvc intranet应用程序访问出错
- Xcode6及以后版本添加.pch文件
- #include,#import,@classd这三者的区别
- 屏蔽按CapsLock键切换到大写时,编辑框自动弹出的提示
- gradle配置教程
- 变治法