查找 - 树上的查找 - 二叉排序树(五)

如题所述

第1个回答  2022-09-28

   )在二叉排序树上进行查找时的平均查找长度和二叉树的形态有关

  二分查找法查找长度为n的有序表 其判定树是惟一的 含有n个结点的二叉排序树却不惟一 对于含有同样一组结点的表 由于

  结点插入的先后次序不同 所构成的二叉排序树的形态和深度也可能不同

  【例】下图(a)所示的树 是按如下插入次序构成的

  

  下图(b)所示的树 是按如下插入次序构成的

  

  

  在二叉排序树上进行查找时的平均查找长度和二叉树的形态有关

  ①在最坏情况下 二叉排序树是通过把一个有序表的n个结点依次插入而生成的 此时所得的二叉排序树蜕化为棵深度为n的单支

  树 它的平均查找长度和单链表上的顺序查找相同 亦是(n+ )/

  ②在最好情况下 二叉排序树在生成的过程中 树的形态比较匀称 最终得到的是一棵形态与二分查找的判定树相似的二叉排序

  树 此时它的平均查找长度大约是lgn

  ③插入 删除和查找算法的时间复杂度均为O(lgn)

  ( )二叉排序树和二分查找的比较

  就平均时间性能而言 二叉排序树上的查找和二分查找差不多

  就维护表的有序性而言 二叉排序树无须移动结点 只需修改指针即可完成插入和删除操作 且其平均的执行时间均为O(lgn)

  因此更有效 二分查找所涉及的有序表是一个向量 若有插入和删除结点的操作 则维护表的有序性所花的代价是O(n) 当有序表是

  静态查找表时 宜用向量作为其存储结构 而采用二分查找实现其查找操作;若有序表里动态查找表 则应选择二叉排序树作为其存

  储结构

  ( )平衡二叉树

  为了保证二叉排序树的高度为lgn 从而保证然二叉排序树上实现的插入 删除和查找等基本操作的平均时间为O(lgn) 在往树

  中插入或删除结点时 要调整树的形态来保持树的 平衡 使之既保持BST性质不变又保证树的高度在任何情况下均为O(lgn) 从而

  确保树上的基本操作在最坏情况下的时间均为O(lgn)

  注意

  ①平衡二叉树(Balanced Binary Tree)是指树中任一结点的左右子树的高度大致相同

  ②任一结点的左右子树的高度均相同(如满二叉树) 则二叉树是完全平衡的 通常 只要二叉树的高度为O( gn) 就可看作是平

  衡的

  ③平衡的二叉排序树指满足BST性质的平衡二叉树

  ④AVL树中任一结点的左 右子树的高度之差的绝对值不超过 在最坏情况下 n个结点的AVL树的高度约为 lgn 而完全平

  衡的二叉树度高约为lgn AVL树是接近最优的

lishixinzhi/Article/program/sjjg/201311/23811