二叉树问题 望高手 解惑!!!
初始化 应该没什么问题 就是创建一个有20个节点的树,但是遍历时候 第一次遍历 数据不对,之后 就死断错误:( Program received signal SIGSEGV, Segmentation fault.
0x0804850e in per (t=0xec830000) at er.c:35
35printf("%d ",t->data); )
这是为什么阿?
#include <stdio.h>
#include <stdlib.h>
typedef struct node *tree;
struct node {
int data;
tree l,r;
};
tree inittree(tree t,int n)
{
//static int num=0;
if(n>=20){
puts("bianjiedaole");
return;
}
t = (struct node *)malloc(sizeof(struct node));
t->r=t->l=NULL;
if(t!=NULL) {
t->data = n;
//printf("%d \n",t->data);
//num++;
inittree(t->l,2*n+1);
puts("lllll");
inittree(t->r,2*n+2);
puts("rrrrr");
}
}
void per(tree t)
{
if(t){
puts("hhhhhh");
printf("%d ",t->data);
per(t->l);
puts("sssss");
per(t->r);
}else return;
}
int main(void)
{
int i=0;
tree root;
inittree(root,0);
puts("pppppp");
per(root);
return 0;
}
[解决办法]
tree inittree(tree t,int n)
{
//static int num=0;
if(n>=20){
puts("bianjiedaole");
return;
}
t = (struct node *)malloc(sizeof(struct node));
t->r=t->l=NULL;
if(t!=NULL) {
t->data = n;
// printf("%d \n",t->data);
// num++;
inittree(t->l,2*n+1);
puts("lllll");
inittree(t->r,2*n+2);
puts("rrrrr");
}
}