码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的存储与遍历

时间:2014-06-03 00:47:39      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:c语言   数据结构   二叉树   遍历   

typedef char status;
typedef char Telemtype;
#define NULL 0
#define OK   1
typedef struct bitnode{
	Telemtype data;
	struct bitnode *lchild,*rchild;
}bitnode,*bitree;
Creatbitree(bitree &t)
{
//先序创建二叉树
	char ch;
	scanf("%c",&ch);
	if(ch=='*') t=NULL;
	else{
		t=(bitnode *)malloc(sizeof(bitnode));
		if(!t) exit(0);
		t->data=ch;
		Creatbitree(t->lchild);
		Creatbitree(t->rchild);
	}
	return OK;
}


status Leafcount(bitree t)
{
//统计二叉树中叶子结点的个数
	if(!t)
		return 0;
	else if(t->lchild==0&&t->rchild==0)
		     return 1;
	     else 
			 return Leafcount(t->lchild)+Leafcount(t->rchild);
}

status Depth(bitree t)
{
	
//计算该二叉树的深度
	int dl,dr,d;
	if(!t) return 0;
	else 
	{
		///////////#TODO7
		   dl=Depth(t->lchild);
		   dr=Depth(t->rchild);
		   if(dl>=dr)  return d=1+dl;
		   if(dl<dr)   return d=1+dr;
	}
}

status Nodecount(bitree t)
{
//统计二叉树的总的结点数	
	int n,nl,nr;
	if(!t) return 0;
	else
	{
		///////////#TODO8
		nl=Nodecount(t->lchild);
		nr=Nodecount(t->rchild);
		n=1+nl+nr;
	}
	return n;
}

void Preordertree(bitree t)
{
	//先序序列遍历二叉树
	if(t)
	{
		printf("%c",t->data);
		Preordertree(t->lchild);
		Preordertree(t->rchild);
	}
}

void Inordertree(bitree t)
{
	//中序序列遍历二叉树
	if(t)
	{
		Inordertree(t->lchild);
		printf("%c",t->data);
		Inordertree(t->rchild);
	}
}

void Pasttree(bitree t)
{
   //后序序列遍历二叉树
	if(t){
	Pasttree(t->lchild);
	Pasttree(t->rchild);
	printf("%c",t->data);
	}
}
编译运行结果如下:
<img src="http://img.blog.csdn.net/20140530230219765" alt="" />

二叉树的存储与遍历,布布扣,bubuko.com

二叉树的存储与遍历

标签:c语言   数据结构   二叉树   遍历   

原文地址:http://blog.csdn.net/u014483914/article/details/27674751

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!