printf("Input the account of the nums:");
scanf("%d",&n);
printf("Input a serials of nums:");
for(i=1;i<=n;i++)
{
scanf("%d",&x);
p = newnode(x);
if (root == NULL)
root=p;
//if 语句里面可以加continue了,对于第一个节点来说,后面那些插入判断是不必要的,不过,不加也不会出错。
q = root;
found = 0; //found每次必须重新置为0,原因自己想想
while (q != NULL&& !found)
{
k = q;
if (q->data > x) {
q = q->lc;
continue; //这里、
}
if (q->data < x) {
q = q->rc;
continue; //还有这里,就是程序出错的原因所在
}
/*假设我先输入3,生成一个3的节点;然后我再输入2,生成2的节点后,将2插入到以3为根的树中时:if (q->data > x) q = q->lc; 经过这一步,q已经指向NULL,但是你的程序继续运行
if (q->data < x) ,q可是NULL啊,q->data是什么??非法访问~~~
*/
if (q->data==x)
found=1;
}