- 6
- 0
- 约1.73千字
- 约 96页
- 2021-11-19 发布于广东
- 举报
*;;问题1:老师想从在座的同学中找到身高1.813米、1.752米和身高1.675的同学;;题问2.
学校国旗班同学有身高档案,怎么建立可以快速找到身高在某些档次的队员?新队员加入时如何将信息准确插入档案?
建立二叉排序树
;;*;2.关键码;3 平均查找长度ASL;4 静态查找与动态查找;8.2 静态查找表;;int search_sqtable(Sq_Table st,KeyType kx)
{ /*在表st中查找关键码值为kx的数据元素,若找到返回该元素在数组中的下标,否则返回0 */
int i = 1;
while( i =st.length st.elem[i].key != kx) i++; /* 从顺序表 的前端向后找*/
if ( i st.length) return 0;
else return i;
} ;;i;算法8-2 设置监视哨的顺序查找算法;;8.2.2 折半查找;;算法8-3 折半查找算法;low;例 2;1 2 3 4 5 6 7 8 9 10 11;算法性能分析;11~13;【折半(二分)查找方法的特点】;8.2.3 分块查找;3. 分块查找(索引顺序查找 );1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18;;;算法8-4 分块查找的算法;;算法性能分析;8.2.4 静态查找表三种查找方法比较;;8.3动态查找表1——树表 ;;2. 二叉排序树的插入与创建;举例:;算法8-6 二叉排序树的插入算法;算法8-7 构造二叉排序树的算法;3.二叉排序树的查找;算法8-5 二叉排序树的查找算法;例 ;4.二叉排序树的删除;要删除二叉排序树中的p结点,分三种情况:
p为叶子结点,只需修改p双亲f的指针
f-lchild=NULL f-rchild=NULL
p只有左子树或右子树
p只有左子树,用p的左孩子代替p (1)(2)
p只有右子树,用p的右孩子代替p (3)(4)
p左、右子树均非空
沿p左子树的根C的右子树分支找到S,S的右子树为空,将S的左子树成为S的双亲Q的右子树,用S取代p (5)
若C无右子树,用C取代p (6)
;S;中序遍历:P PR S Q;;例;算法8-8 二叉排序树的删除算法;;;;8.3.2 平衡二叉树(AVL树);; ;;;3. 平衡化旋转;如果在某一结点发现高度不平衡,停止回溯。从发生不平衡的结点起,沿刚才回溯的路径取直接下两层的结点。
如果这三个结点处于一条直线上,则采用单旋转进行平衡化。单旋转可按??方向分为左单旋转和右单旋转, 其中一个是另一 个的镜像,其方向与不平衡的形状相关。;;h;h;在子树F或G中插入新结点,该子树的高度增1。结点A的平衡因子变为 +2,发生了不平衡。
从结点A起沿插入路径选取3个结点A、B和E,它们位于一条形如“?”的折线上,因此需要进行先左后右的双旋转。
首先以结点E为旋转轴,将结点B反时针旋转,以E代替原来B的位置,做左单旋转。
再以结点E为旋转轴,将结点A顺时针旋转,做右单旋转。使之平衡化。;;0;先右后左双旋转 (RotationRightLeft);;0;例,输入关键码序列为 { 16, 3, 7, 11, 9, 26, 18, 14, 15 },插入和调整过程如下。;;;AVL 定义;算法8-9 平衡二叉树插入算法;;;;;;;;8.3.3 B-树和B+树;B-树的定义;;1;;2.B-树的插入和删除;;;;;3.B+树;;
原创力文档

文档评论(0)