)在二叉排序树上进行查找时的平均查找长度和二叉树的形态有关 二分查找法查找长度为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而完全平 衡的二叉树度高约为lgnAVL树是接近最优的 |