好库网 好库网首页 | 我的好库
VC开发指南

C语言建立和遍历二叉树

发布者:vchelp
发布日期:2012/6/18 21:14:17   更新日期:2012/6/18 21:14:17
阅读次数:4051
评分:4.80
介绍:树是一个应用十分广泛和重要的非线性数据结构。只有两个后继的二叉树在树的应用中,它起着特别重要的作用。
正文:

树是一个应用十分广泛和重要的非线性数据结构。只有两个后继的二叉树在树的应用中,它起着特别重要的作用。下面的代码构建一个二叉树,并按某种规则便利树中的各个元素,最后将其打印出来。

 

#include <stdio.h>
#include <stdlib.h>

struct tree
{
	char info;
	struct tree *left;
	struct tree *right;
};

struct tree *root;		/*树的第一个结点*/
struct tree *construct(struct tree *root, struct tree *r, char info);
void print(struct tree *r, int l);

int main(void)
{
	char s[80];
	root = NULL;
	do
	{
		printf("请输入一个字符:");
		gets(s);
		root = construct(root,root,*s);
	}while(*s);
	print(root,0);
	return 0;
}

struct tree *construct(
	struct tree *root, 
	struct tree *r, 
	char info)
{
	if(!r)
	{
		r = (struct tree *)malloc(sizeof(struct tree));
		if(!r)
		{
			printf("内存分配失败!");
			exit(0);
		}
		r->left = NULL;
		r->right = NULL;
		r->info = info;
		if(!root)
			return r;
		if(info < root->info)
			root->left = r;
		else 
			root->right = r;
		return r;
	}
	if(info < r->info)
		construct(r,r->left,info);
	else
		construct(r,r->right,info);

	return root;	
}

void print(struct tree *r, int l)
{
	int i;
	if(!r)
		return;
	print(r->left,l+1);
	for(i = 0;i < l;++i)
		printf(" ");
	printf("%c\n",r->info);
	print(r->right,l+1);
}

 

 


评论 [发表评论]
账号 密码 还没帐号呢,现在注册一个?

免责声明:好库网所展示的信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。好库网不提供任何保证,并不承担任何法律责任。