为什么我用这段代码判断是否为完全二叉树的时候,总是会在输入二叉树的时候就崩溃啊?
求解答,求解答,求解答orz。
#include
using namespace std;
struct Tree
{
int data;
Tree *left,*right;
};
Tree *seek(int a,Tree *t){
Tree *tmp;
if (t==NULL) return NULL;
if(t->data==a) return t;
if(tmp=seek(a,t->left)) return tmp;
else return seek(a,t->right);
}
bool isComplete(Tree *p)
{ bool i=1;
if(p==NULL) {return i;}
if(p->left==NULL&&p->right!=NULL){i=0;return i;}
isComplete(p->left);
isComplete(p->right);
return i;
}
void clear(Tree *e,int n)
{
Tree *p,*q;
q=e;
for (int i=1;iint main()
{
int n;
cin>>n;
Tree *head=new Tree;
head->data=0;
for (int i=1;iint j;
cin>>j;
Tree *tmp=new Tree;
tmp->data=i;
if(seek(j,head)->left==NULL) seek(j,head)->left=tmp;
else seek(j,head)->right=tmp;
}
if(isComplete(head)) cout<<"true"<else cout << "false" <return 0;
}
你初始化tree的代码在哪呢
没初始化tree就直接执行查找,那不返回null吗,然后你又没有判断返回的是不是null就往里面存东西
tmp=seek(a,t->left)这里判断都写成赋值了
你这代码问题多了
二叉树查找的代码也不对呀,你要根据被查找的数比当前节点大或者小去查对应的分支,你判断左边不相等就往右边找那能对吗