//构造次优查找树
void secondOptmal(BiTree &T, Elemtype R[], float sw[], int low, int high)
{
int i = low, j;
float min = sw[high] - sw[low];
float dw = sw[high] + sw[low+1];
for(j=low+1;j<high;j++)//找出最小的dw - sw[j] - sw[j-1]
{
if(abs(dw - sw[j] - sw[j-1])<min)
{
i = j;
min = abs(dw - sw[j] - sw[j-1]);
}
}
T = (BiTree) mallow(sizeof(BiNode));
T->data = R[i];
if(i == low)
T->lchild = NULL;
else
sencondOptimal(T->lchild, R, sw, low, i-1);//构造左子树
if(i == high)
T->rchild = NULL;
else
secondOptimal(T->rchild, R, sw, i+1, high);//构造右子树
}
数据结构笔记-构造次优查找树
最新推荐文章于 2024-02-01 13:34:26 发布