nimo_096 2015-07-28 10:13 采纳率: 50%
浏览 4875
已结题

C语言二叉树的节点查找问题(递归方法)

用的递归的方法查找元素 有点类似于二叉树建立
代码如下

 struct node *search(struct node *n,int v){//查找
  struct node *p;
  p=n;

 if(p->value==v){//找到
    return p;

  }
  else if(v<p->value){//左边部分查找
    if(p->left==NULL)
      return NULL;//未找到
    else{
      p=p->left;

      search(p,v);
    }
  }
  else{//v>p->value,右边部分查找
    if(p->right==NULL)
      return NULL;//未找到
    else{
      p=p->right;
      search(p,v);

    }
  }
}

main方法中:point=search(root,20);
用这种方法 总是返回根节点的值 而不是要查找的值或者null

  • 写回答

4条回答

  • oyljerry 2015-07-28 10:29
    关注

    因为你需要修改指针的地址,所以你需要用二级指针

    struct node *search(struct node **n,int v)

    struct node **p;

    参考这个代码

     int
    Search_data(TreeNode *t,TreeNode **p,TreeNode **q, elemtype x)
    {
        int flag=0;
        *p=NULL;
        *q=t;
    
        while(*q)
        {
            if (x>(*q)->data)
            {
                *p=*q;
                *q=(*q)->Rchild;
            }
            else{
                if (x<(*q)->data)
                {
                    *p=*q;
                    *q=(*q)->Lchild;
                }
                else{
                    flag=1;
                    break;                    
                }
            }
        }
        return flag;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波