美文网首页
数据结构与算法-静态最优查找树

数据结构与算法-静态最优查找树

作者: 星空下奔跑 | 来源:发表于2018-03-31 22:32 被阅读0次

    静态最优查找树

    当有序表中每个记录的查询概率相同时,用折半查找性能最优。当有序表的查找概率不等时,折半查找的概率未必最优。
    若只考虑查找成功的情况,则使查找性能最优的判定树其带权路径长度之和为PH值。
    PH=∑wihi
    hi为第i个结点在二叉树上的层次数;结点的权wi=c*pi,pi为第i个结点的查找概率,c为某个常量。
    称PH值最小的二叉判定树为静态最优查找树(Static Optimal Search Tree).

    次优查找树(Nearly Optimal Search Tree)

    构造次优查找树的方法:首先在记录序列中取第i个记录构造根结点,使得左部分序列的累计权值和与右部分序列的累计权值和差的绝对值最小;再对左右子序列分别构造次优查找树。

    void SecondOptimal(BiTree &T,ElemType R[],float sw[],int low,high){
        i=low;
        min=abs(sw[high]-sw[low]);
        dw=sw[high]+sw[low-1];
        for(j=low+1;j<=high;++j){
            i=j;min=abs(dw-sw[j]-sw[j-1]);
        }//for
        T=(BiTree)malloc(sizeof(BiNode));
        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);
    }//SecondOptimal
    

    相关文章

      网友评论

          本文标题:数据结构与算法-静态最优查找树

          本文链接:https://www.haomeiwen.com/subject/ndzvcftx.html