📄 algo0903.cpp
字号:
Status SecondOptimal(BiTree &T, ElemType R[], float sw[],
int low, int high) { // 算法9.3
// 由有序表R[low..high]及其累计权值表sw
// (其中sw[0]==0)递归构造次优查找树T。
int i,j;
float min,dw;
i = low; min = (float)fabs(sw[high]-sw[low]);
dw = sw[high]+sw[low-1];
for (j=low+1; j<=high; ++j) // 选择最小的ΔPi值
if (fabs(dw-sw[j]-sw[j-1]) < min) {
i = j; min = (float)fabs(dw-sw[j]-sw[j-1]);
}
if (!(T = (BiTree)malloc(sizeof(BiTNode)))) return ERROR;
T->data = R[i]; // 生成结点
if (i==low) T->lchild = NULL; // 左子树空
else SecondOptimal(T->lchild, R, sw, low, i-1); // 构造左子树
if (i==high) T->rchild = NULL; // 右子树空
else SecondOptimal(T->rchild, R, sw, i+1, high); // 构造右子树
return OK;
} // SecondOptimal
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -