用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

二叉树 c数据结构

2012-08-28 作者: 神马举报

[c]代码库

/*二叉树
*/

typedef struct bitnode
{
	char data;
	struct bitnode *lchild, *rchild;
} bitnode, *bitree;
void createbitree ( t,n )
bitnode ** t;
int *n;
{
	char x;
	bitnode *q;
	*n=*n+1;
	printf ( "\n Input %d DATA:",*n );
	x=getchar();
	if ( x!='\n' ) getchar();
	if ( x=='\n' )
		return;
	q= ( bitnode* ) malloc ( sizeof ( bitnode ) );
	q->data=x;
	q->lchild=NULL;
	q->rchild=NULL;
	*t=q;
	printf ( " This Address is: %o, Data is: %c,\n Left Pointer is: %o, Right Pointer is: %o",q,q->data,q->lchild,q->rchild );
	createbitree ( &q->lchild,n );
	createbitree ( &q->rchild,n );
	return;
}

void visit ( e )
bitnode *e;
{
	printf ( " Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild );
}

void preordertraverse ( t )
bitnode *t;
{
	if ( t )
	{
		visit ( t );
		preordertraverse ( t->lchild );
		preordertraverse ( t->rchild );
		return ;
	}
	else
		return ;
}
void countleaf ( t,c )
bitnode *t;
int *c;
{
	if ( t!=NULL )
	{
		if ( t->lchild==NULL && t->rchild==NULL )
		{
			*c=*c+1;
		}
		countleaf ( t->lchild,c );
		countleaf ( t->rchild,c );
	}
	return;
}
int treehigh ( t )
bitnode *t;
{
	int lh,rh,h;
	if ( t==NULL )
		h=0;
	else
	{
		lh=treehigh ( t->lchild );
		rh=treehigh ( t->rchild );
		h= ( lh>rh ? lh:rh ) +1;
	}
	return h;
}

main()
{
	bitnode *t;
	int count=0;
	int n=0;
	printf ( "\n Please input TREE Data:\n" );
	createbitree ( &t,&n );
	printf ( "\n This is TREE struct: \n" );
	preordertraverse ( t );
	countleaf ( t,&count );
	printf ( "\n This TREE has %d leaves ",count );
	printf ( " , High of The TREE is: %d\n",treehigh ( t ) );
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...