二叉树的构建,遍历等基本操作
2016-09-16 08:53
435 查看
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
typedef struct BTNode
{
char data;
struct BTNode *lchild,*rchild;
}BTNode;
void CreateBTNode(BTNode *&T);//构建二叉树
void PreBTNode(BTNode *T);//先序遍历二叉树
void InBTNode(BTNode *T);//中序遍历二叉树
void PostBTNode(BTNode *T);//后序遍历二叉树
int DepthBTNode(BTNode *T);//二叉树深度
int LeafBTNode(BTNode *T);//叶子节点数
int main()
{
BTNode *T;
printf("-----------构造二叉树----------\n");
CreateBTNode(T);
printf("\n---------先序遍历二叉树-------\n");
PreBTNode(T);
printf("\n---------中序遍历二叉树-------\n");
InBTNode(T);
printf("\n---------后序遍历二叉树-------\n");
PostBTNode(T);
printf("\n--------求二叉树深度-------\n");
printf("%d\n",DepthBTNode(T));
printf("\n--------求叶子节点数-------\n");
printf("%d\n",LeafBTNode(T));
system("pause");
return 0;
}
//构建二叉树
void CreateBTNode(BTNode *&T)
{
char ch;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
T=(BTNode *)malloc(sizeof(BTNode));
T->data=ch;
CreateBTNode(T->lchild);
CreateBTNode(T->rchild);
}
}
//先序遍历二叉树
void PreBTNode(BTNode *T)
{
if(T!=NULL)
{
printf("%c\t",T->data);
PreBTNode(T->lchild);
PreBTNode(T->rchild);
}
}
//中序遍历二叉树
void InBTNode(BTNode *T)
{
if(T!=NULL)
{
InBTNode(T->lchild);
printf("%c\t",T->data);
InBTNode(T->rchild);
}
}
//后序遍历二叉树
void PostBTNode(BTNode *T)
{
if(T!=NULL)
{
PostBTNode(T->lchild);
PostBTNode(T->rchild);
printf("%c\t",T->data);
}
}
//二叉树深度
int DepthBTNode(BTNode *T)
{ int left,right;
if(T==NULL)
return 0;
else
{
left= DepthBTNode(T->lchild);
right=DepthBTNode(T->rchild);
return (left>right?left:right+1);
}
}
//叶子节点数
int LeafBTNode(BTNode *T)
{
static int count=0;
if(T!=NULL)
{
if(T->lchild==NULL&&T->rchild==NULL)
count++;
LeafBTNode(T->lchild);
LeafBTNode(T->rchild);
}
return count;
}
相关文章推荐
- 二叉树的基本操作,遍历,子结构,镜像,构建
- 二叉树的基本操作,前序遍历,后续遍历,中序遍历
- 二叉树的基本操作及遍历
- 数据结构(java语言描述)树(二叉树)的构建和遍历操作
- 二叉树学习总结:二叉树的基本操作、遍历二叉树、中序线索化二叉树、中序遍历线索二叉树
- C语言实现二叉树的基本操作---创建、遍历、求深度、求叶子结点
- 二叉树的基本操作(创建、递归和非递归遍历、求深度、求叶子数)
- 二叉树基本操作及层次遍历
- 二叉树的先序、中序、后序遍历等基本操作c++实现
- 实验三 二叉树的基本操作(建立)及遍历
- PHP数据结构之九 PHP储存二叉树,二叉树的创建与二叉树的基本操作 遍历二叉树算法
- C语言实现二叉树的基本操作---创建、遍历、求深度、求叶子结点
- 二叉树的基本操作——遍历
- 二叉树的先序、中序、后序遍历等基本操作c++实现
- 查找二叉树的基本操作以及层次遍历
- javascript实现数据结构: 树和二叉树,二叉树的遍历和基本操作
- 二叉树基本操作的递归实现(二叉树建立,先序,中序,后序,深度的递归遍历。广度优先,高度优先的非递归遍历)
- 二叉树的构造(二叉链表)、遍历以及基本操作
- c语言描述的二叉树的基本操作(层序遍历,递归,非递归遍历)
- C二叉树的基本操作---创建、遍历、求深度、求叶子结点