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

静态最优查找树

当有序表中每个记录的查询概率相同时,用折半查找性能最优。当有序表的查找概率不等时,折半查找的概率未必最优。
若只考虑查找成功的情况,则使查找性能最优的判定树其带权路径长度之和为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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 因为之前就复习完数据结构了,所以为了保持记忆,整理了一份复习纲要,复习的时候可以看着纲要想具体内容。 树 树的基本...
    牛富贵儿阅读 7,570评论 3 10
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 6,095评论 0 19
  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 2,532评论 0 3
  • 1.树(Tree): 树是 n(n>=0) 个结点的有限集。当 n=0 时称为空树。在任意一颗非空树中:有且仅有一...
    ql2012jz阅读 1,224评论 0 3
  • 原文出处:http://www.cnblogs.com/maybe2030/p/4715035.html引文出处:...
    明教de教主阅读 9,345评论 0 7

友情链接更多精彩内容