当前位置: 技术问答>linux和unix
简单的二叉树插入操作,断错误一星期了~快疯掉了~~望高人指点
来源: 互联网 发布时间:2016-05-25
本文导语: #include #include #include #define MAX 100 typedef struct BTreeNode { char data[40]; int level; struct BTreeNode *left,*right; }BTreeNode,*pNode; int BTreeInsert(pNode root,pNode p) { pNode q=root,qq=NULL; while(q&&p->level>=q->level) { ...
#include
#include
#include
#define MAX 100
typedef struct BTreeNode
{
char data[40];
int level;
struct BTreeNode *left,*right;
}BTreeNode,*pNode;
int BTreeInsert(pNode root,pNode p)
{
pNode q=root,qq=NULL;
while(q&&p->level>=q->level)
{
qq=q;
if(p->level>q->level)
q=q->left;
else if(p->level==q->level)
q=q->right;
}
//q=p;
if(p->level>qq->level) qq->left=p;
else qq->right=p;
return 0;
}
int main()
{
pNode root=NULL,p;
FILE *fp;
char array[MAX][40];
int lev,count=0;
while(count data,array[count]);
p->level=lev;
p->left=p->right=NULL;
while(getchar()!='n')
continue;
puts("Insert");
if(root==NULL) root=p;
else BTreeInsert(root,p);
count++;
if(count level>=q->level) 如果你这个条件为false 就直接执行下面的if(p->level>qq->level) 这时qq=null当然出现段错误了
#include
#include
#define MAX 100
typedef struct BTreeNode
{
char data[40];
int level;
struct BTreeNode *left,*right;
}BTreeNode,*pNode;
int BTreeInsert(pNode root,pNode p)
{
pNode q=root,qq=NULL;
while(q&&p->level>=q->level)
{
qq=q;
if(p->level>q->level)
q=q->left;
else if(p->level==q->level)
q=q->right;
}
//q=p;
if(p->level>qq->level) qq->left=p;
else qq->right=p;
return 0;
}
int main()
{
pNode root=NULL,p;
FILE *fp;
char array[MAX][40];
int lev,count=0;
while(count data,array[count]);
p->level=lev;
p->left=p->right=NULL;
while(getchar()!='n')
continue;
puts("Insert");
if(root==NULL) root=p;
else BTreeInsert(root,p);
count++;
if(count level>=q->level) 如果你这个条件为false 就直接执行下面的if(p->level>qq->level) 这时qq=null当然出现段错误了
|
p=malloc(sizeof(pNode)); //指针大小只有4
|
综合以上两楼.