您的位置:首页 > 其它

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

2013-09-23 20:41 627 查看
//问题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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐