一棵排序二叉树(即二叉搜索树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;
}
}
//法,找出距离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;
}
}
相关文章推荐
- 一棵排序二叉树,令 f=(最大值+最小值)/2,设计一个算法,找出距离f值最近、大于f值的结点。复杂度如果是O(n2)则不得分。
- 一棵排序二叉树,令 f=(最大值+最小值)/2,设计一个算法,找出距离f值最近、大于f值的结点。 复杂度如果是O(n2)则不得分。
- 一棵排序二叉树,令 f=(最大值+最小值)/2, 设计一个算法,找出距离f 值最近、大于f 值的结点。 复杂度如果是O(n2)则不得分
- 14、一棵排序二叉树,令 f=(最大值+最小值)/2, 设计一个算法,找出距离f值最近、大于f值的结点。
- 二叉排序树中,令f = (最大值+最小值) / 2,设计一个算法, 找出距离f值最近、大于f值的结点。复杂度不能为O(n2)。
- 一颗排序二叉树,令f=(最大值+最小值)/2,找出距离f值最近、大于f值的结点
- 任意给定一个大于等于10的整数A,请写一程序,以最小的时间复杂度找出比A小并且最接近A的一个整数B。要求:A的每位之和与B的每位之和相等 例:如果A=123 那么B=114
- 堆的数据结构能够使得堆顶总是维持最大(对于大根堆)或最小(对于小根堆),给定一个数组,对这个数组进行建堆,则平均复杂度是多少?如果只是用堆的 push 操作,则一个大根堆依次输入 3,7,2,4,1,5,8 后,得到的堆的结构示意图是下述图表中的哪个?
- 13、设计一个算法,找出二叉树上任意两个结点的最近共同父结点。
- 一是关于怎样找出和去除重复数据,这在另一个帖子利已有详细介绍。二是关于找出某一列里最大或最小的前几个,或是大于或小于某一个值(最大值或平均值)的数据
- 如果字符串的一个子串(其长度大于 1)的各个字符均相同,则称之为等值子串。试设计一算法,求出串S中的最大等值子串 函数返回最大等值子串的长度,如果没有则返回1。 例如: 若S= “abc123abc1
- 定义一个由整数组成的数组,然后输入一个整数X,如果X不在此数组中,返回小于X的最大数的位置i和大于X的最小数的位置j
- 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
- C#第1次试验(3)设计一个程序,输入10个数存入数组中,求最大值、最小值和平均值.
- 设计一个最优算法来查找n个元素数组中的最大值和最小值
- 一个养狗场有4只狗,体重分别为 花花:4.5kg;白白:5.6kg;黑黑:78kg;红红:9.0kg;请编写一个程序,可以计算他们的平均体重,可以找出体重最大和体重最小的狗的名字.
- 电子科技大学推免复试题:利用递归方法找出一个数组中的最大值和最小值
- 程序员面试金典——解题总结: 9.18高难度题 18.11给定一个方阵,其中每个单元(像素)非黑即白。设计一个算法,找出四条边都是黑色像素的最大子方阵。
- 最近距离 已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,距离最近的两个点间的最小距离
- 找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。