一棵排序二叉树(即二叉搜索树BST),令 f=(最大值+最小值)/2,设计一个算 //法,找出距离f值最近、大于f值的结点。复杂度如果是O(n2)则不得分。



  1. //问题10:10.一棵排序二叉树(即二叉搜索树BST),令 f=(最大值+最小值)/2,设计一个算  
  2.   
  3. //法,找出距离f值最近、大于f值的结点。复杂度如果是O(n2)则不得分。  
  4. treeNode *findNearMid(treeNode** root){  
  5.     treeNode* ptr = *root;  
  6.     int min, max;  
  7.     while (ptr != NULL){  
  8.         min = ptr->data;  
  9.         ptr = ptr->lchild;  
  10.     }  
  11.     printf("the min is %d\n",min);  
  12.     ptr = *root,q;  
  13.     while (ptr != NULL){  
  14.         max = ptr->data;  
  15.         ptr = ptr->rchild;  
  16.     }  
  17.     printf("the max is %d\n",max);  
  18.     int half = (min + max) >> 1;  
  19.     printf("half is %d\n",half);  
  20.     ptr = *root;  
  21.     while (1){  
  22.         if (ptr->data < half){  
  23.             ptr = ptr->rchild;  
  24.         }  
  25.         else  if (ptr->data > half){  
  26.                 q=ptr;
  27.                 ptr=ptr->lchild;
  28.             }  
  29.         else if  (ptr->rchild!=NULL)   
  30.             {  
  31.                 return (ptr->rchild);  
  32.             }  
  33.         else
  34.                 return q;
  35.     }  
  36. }  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yzs87

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值