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

MySQL源码分析
yzs87


  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. }  

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值