首页
社区
课程
招聘
二叉树算法问题
发表于: 2010-5-6 20:21 4373

二叉树算法问题

2010-5-6 20:21
4373
#include "stdio.h"
#include <malloc.h>
#define max 100
typedef char datatype;
typedef struct node
{   
 datatype data;
    struct node *lchild,*rchild;
}bitree;
bitree *Q[max];
bitree *CREATREE(bitree *t)
{
	char x;
	int i,j;
	bitree *p=t;
	printf("\t\t\t输出列号和字符\n");
	printf("\t\t\t  以0和$结束\n");
	 printf("i,x= ");
	scanf("%d,%c",&i,&x);
	while (i!=0&&x!='$')
	{
		 p=(bitree *)malloc(sizeof(bitree));//申请一个节点
		 p->data=x;
		 p->lchild=NULL;
		 p->rchild=NULL;
		 Q[i]=p;
		 if(i!=1)
		 {
			 j=i/2;  //双亲节点。
			 if (i%2==0)
				Q[j]->lchild=p; //判断是左子树还是右子树
			 else
				Q[j]->rchild=p;
		 }
		 printf("i,x= ");
		 scanf("%d,%c",&i,&x);
	}
return Q[1];
}

void PrinBtree(bitree *t)
{
	//先序遍列
	if (t!=NULL)
	{
	printf("%c ",t->data);	
	PrinBtree(t->lchild);
	PrinBtree(t->rchild);
	}
}
void main()
{
bitree *tree;
tree=CREATREE(tree);
PrinBtree(tree);
printf("\n");
}





如果我从。大于2开始输入。就会出现内存问题。
从1开始就没有问题。可以成生这个二叉树。
想让大侠们帮一下。那里的思路出错了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 181
活跃值: (134)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
从2开始输入。就出错。哎。。。。
2010-5-6 20:23
0
雪    币: 358
活跃值: (662)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
if(i!=1)
                {
                        j=i/2;  //双亲节点。
                        if (i%2==0)
                                Q[j]->lchild=p; //判断是左子树还是右子树   <---这里出错了
i = 2 ;
j = 1 ;
Q[j]->lchild = p ;
可是你的树还是空树呀!所以访问异常了!

你可以找本《数据结构与算法分析--C语言描述》那本书看下,我觉得那本书非常不错!
2010-5-6 20:43
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
还是找本数据结构看看吧
这段程序是标准的填充2叉树,保证是先有父再有子的,如果跳着填后面还会有问题
2010-5-6 21:13
0
雪    币: 181
活跃值: (134)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=EvilKnight;802987]if(i!=1)
                {
                        j=i/2;  //双亲节点。
                        if (i%2==0)
                                Q[j]->lchild...[/QUOTE]

是谁写的,那个出版社
2010-5-6 21:18
0
雪    币: 4902
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
原作者:Mark Allen Weiss
简体中文译者:冯舜玺
出版社:机械工业出版社

印象中应该是这样
具体字可能有打错的
有几年没翻过了。。。
2010-5-6 21:36
0
雪    币: 358
活跃值: (662)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
C语言描述的好像已经不出版了,但是一些书店还是可以买到的,上周去华中科大那个博优书店看到还有的!
英文原版还有,C++描述的好像也有!但是我感觉C写的更精练一些的!
2010-5-6 21:54
0
雪    币: 132
活跃值: (30)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
拼命。。。。学习。。。。
2010-12-7 17:38
0
游客
登录 | 注册 方可回帖
返回
//