- //问题10:10.一棵排序二叉树(即二叉搜索树BST),令 f=(最大值+最小值)/2,设计一个算
- //法,找出距离f值最近、大于f值的结点。复杂度如果是O(n2)则不得分。
- treeNode *findNearMid(treeNode** root){
- treeNode* ptr = *root;
- int min, max;
- while (ptr != NULL){
- min = ptr->data;
- ptr = ptr->lchild;
- }
- printf("the min is %d\n",min);
- ptr = *root,q;
- while (ptr != NULL){
- max = ptr->data;
- ptr = ptr->rchild;
- }
- printf("the max is %d\n",max);
- int half = (min + max) >> 1;
- printf("half is %d\n",half);
- ptr = *root;
- while (1){
- if (ptr->data < half){
- ptr = ptr->rchild;
- }
- else if (ptr->data > half){
- q=ptr;
- ptr=ptr->lchild;
- }
- else if (ptr->rchild!=NULL)
- {
- return (ptr->rchild);
- }
- else
- return q;
- }
- }
一棵排序二叉树(即二叉搜索树BST),令 f=(最大值+最小值)/2,设计一个算 //法,找出距离f值最近、大于f值的结点。复杂度如果是O(n2)则不得分。
最新推荐文章于 2022-03-13 22:37:25 发布