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;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决