请您留下宝贵的建议吧:)
广西百色高中欢迎您!

| 网站首页 | 学校概况 | 软件下载 | 图片中心 | 雁过留声 | 视频资源 | 校长信箱 | 内 部 网 |
| 同 学 录 | 网络办公 | 教学课件 | 优秀教案 | 试卷下载 | 教学素材 | 教学论文 | 电子图书 |

 
您现在的位置: 广西百色高中校园网 >> 学校概况 >> 学生频道 >> 信息技术 >> 数据结构 >> 文章正文 用户登录 新用户注册
   
   

[组图]第八章 查找(七)二叉排序树上的查找          【字体:
第八章 查找(七)二叉排序树上的查找
作者:仔仔    文章来源:本站原创    点击数:    更新时间:2006-9-26

第八章 查找(七)二叉排序树上的查找

(3) 二叉排序树上的查找
①查找递归算法
     在二叉排序树上进行查找,和二分查找类似,也是一个逐步缩小查找范围的过程。
递归的查找算法:
BSTNode *SearchBST(BSTree T,KeyType key)
  { //在二叉排序树T上查找关键字为key的结点,成功时返回该结点位置,否则返回NUll
    if(T==NULL||key==T->key) //递归的终结条件
      return T; //T为空,查找失败;否则成功,返回找到的结点位置
    if(key<T->key)
      return SearchBST(T->lchild,key);
    else
      return SearchBST(T->rchild,key);//继续在右子树中查找
   } //SearchBST

②算法分析
     在二叉排序树上进行查找时,若查找成功,则是从根结点出发走了一条从根到待查结点的路径。若查找不成功,则是从根结点出发走了一条从根到某个叶子的路径。

(1) 二叉排序树查找成功的平均查找长度
     在等概率假设下,下面(a)图中二叉排序树查找成功的平均查找长度为
       
     在等概率假设下,(b)图所示的树在查找成功时的平均查找长度为:
           ASLb=(1+2+3+4+5+6+7+8+9+10)/10=5.5
 
  注意:
     与二分查找类似,和关键字比较的次数不超过树的深度。

(2)在二叉排序树上进行查找时的平均查找长度和二叉树的形态有关
     二分查找法查找长度为n的有序表,其判定树是惟一的。含有n个结点的二叉排序树却不惟一。对于含有同样一组结点的表,由于结点插入的先后次序不同,所构成的二叉排序树的形态和深度也可能不同
【例】下图(a)所示的树,是按如下插入次序构成的:
        45,24,55,12,37,53,60,28,40,70
     下图(b)所示的树,是按如下插入次序构成的:
        12,24,28,37,40,45,53,55,60,70

     在二叉排序树上进行查找时的平均查找长度和二叉树的形态有关:
  ①在最坏情况下,二叉排序树是通过把一个有序表的n个结点依次插入而生成的,此时所得的二叉排序树蜕化为棵深度为n的单支树,它的平均查找长度和单链表上的顺序查找相同,亦是(n+1)/2。
  ②在最好情况下,二叉排序树在生成的过程中,树的形态比较匀称,最终得到的是一棵形态与二分查找的判定树相似的二叉排序树,此时它的平均查找长度大约是lgn。
  ③插入、删除和查找算法的时间复杂度均为O(lgn)。

(3)二叉排序树和二分查找的比较
     就平均时间性能而言,二叉排序树上的查找和二分查找差不多。
     就维护表的有序性而言,二叉排序树无须移动结点,只需修改指针即可完成插入和删除操作,且其平均的执行时间均为O(lgn),因此更有效。二分查找所涉及的有序表是一个向量,若有插入和删除结点的操作,则维护表的有序性所花的代价是O(n)。当有序表是静态查找表时,宜用向量作为其存储结构,而采用二分查找实现其查找操作;若有序表里动态查找表,则应选择二叉排序树作为其存储结构。

(4)平衡二叉树
     为了保证二叉排序树的高度为lgn,从而保证然二叉排序树上实现的插入、删除和查找等基本操作的平均时间为O(lgn),在往树中插入或删除结点时,要调整树的形态来保持树的"平衡。使之既保持BST性质不变又保证树的高度在任何情况下均为O(lgn),从而确保树上的基本操作在最坏情况下的时间均为O(lgn)。
注意:
     ①平衡二叉树(Balanced Binary Tree)是指树中任一结点的左右子树的高度大致相同。
     ②任一结点的左右子树的高度均相同(如满二叉树),则二叉树是完全平衡的。通常,只要二叉树的高度为O(1gn),就可看作是平衡的。
     ③平衡的二叉排序树指满足BST性质的平衡二叉树。
     ④AVL树中任一结点的左、右子树的高度之差的绝对值不超过1。在最坏情况下,n个结点的AVL树的高度约为1.44lgn。而完全平衡的二叉树度高约为lgn,AVL树是接近最优的。

文章录入:qinjun    责任编辑:qinjun 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
          最新热点       最新推荐       相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

       
     
     
     
    广西百色高中欢迎您!   网站地图 | 联系站长 | 友情链接 | 用户排行 | 版权申明 | 管理登录
    版权所有 Copyright© 2005-2010 广西百色高中 (桂ICP备05013955号)
    学校地址:广西百色市城乡路93号 电话号码:0776-2824142 传真:0776-2847293 邮政编码:533000
    站    长:覃钧  QQ:75331465            改版时间:2007年8月20日