《算法导论》第12章 二叉搜索树 个人笔记
来源:互联网 发布:ubuntu 16.04安装lnmp 编辑:程序博客网 时间:2024/06/10 03:24
第12章 二叉搜索树
12.1 定义
设x是二叉搜索树中的一个结点。如果y是x左子树中的一个结点,则有
遍历:
INORDER-TREE-WALK(x)if x != NULL INORDER-TREE-WALK(x.left) print x.key INORDER-TREE-WALK(x.right)
如果x是一颗有n个结点子树的根,那么调用INORDER-TREE-WALK(x)需要
12.2 查询
查找指定关键字k
- 递归式:
TREE-SEARCH(x,k)if x == NULL || k == x.key return xif k < x.key return TREE-SEARCH(x.left,k)else return TREE-SEARCH(x.right,k)
- while循环式:
ITERATIVE-TREE-SEARCH(x,k)while x != NULL && k != x.key if k < x.key x = x.left else x = x.rightreturn x
查找最小和最大关键字、前继和后驱
- 最小关键字
TREE-MINIMUM(x)while x.left != NULL x = x.leftreturn x
- 最大关键字
TREE-MAXIMUM(x)while x.right != NULL x = x.rightreturn x
- 后驱
TREE-SUCCESSOR(x)if x.right != NULL return TREE-MINIMUM(x.right)y = x.pwhile y != NULL && y.right == x x = y y = y.preturn y
- 前继
TREE-PREDECESSOR(x)if x.left != NULL return TREE-MAXIMUM(x.left)y = x.pwhile y != NULL && y.left == x x = y y = y.preturn y
定理:在一颗高度为h的二叉搜索树上,动态集合上的以上5个查询操作可以在
12.3 插入和删除
- 插入(默认树中不存在待插入的关键字)
TREE-INSERT(T,z)y = NULLx = T.rootwhile x != NULL y = x if z.key < x.key x = x.left else x = x.rightz.p = yif y == NULL T.root = z //tree T was emptyelseif z.key < y.key y.left = zelse y.right = z
- 删除
// 用一颗以v为根的子树替换一颗以u为根的子树,// 结点u的双亲变为结点v的双亲TRANSPLANT(T,u,v)if u.p == NULL T.root = velseif u == u.p.left u.p.left = velse u.p.right = vif v != NULL v.p = u.pTREE-DELETE(T,z)if z.left == NULL TRANSPLANT(T,z,z.right)elseif z.right == NULL TRANSPLANT(T,z,z.left)else y = TREE-MINIMUM(z.right) // find z's successor if y.p != z TRANSPLANT(T,y,y.right) y.right = z.right y.right.p = y TRANSPLANT(T,z,y) y.left = z.left t.left.p = y
定理:在一颗高度为h的二叉搜索树上,动态集合上的INSERT和DELETE操作可以在
12.4 随机构建二叉搜索树
定理:一颗有n个不同关键字的随机构建二叉搜索树的期望为
阅读全文
0 0
- 《算法导论》第12章 二叉搜索树 个人笔记
- 算法导论 第12章 二叉搜索树 C++实现
- 二叉搜索树(算法导论第12章)
- 算法导论第12章-二叉搜索树
- 算法导论-第12章-二叉搜索(查找)树
- 算法导论-第12章-二叉搜索树-12.2-1
- 算法导论笔记:12二叉搜索树
- 《算法导论》笔记 第12章 12.1 二叉查找树
- 算法导论 12章 二叉搜索树
- 算法导论 12章 二叉搜索树
- 《算法导论》第18章 B树 个人笔记
- 《算法导论》第23章 最小生成树 个人笔记
- 算法导论第12章-搜索二叉树伪代码的C++程序全实现
- 算法导论12(二叉搜索树)
- [算法导论]第十二章《二叉搜索树》
- 算法导论 第十二章 二叉搜索树
- 算法导论12章二叉搜索树 思考题总结
- 算法导论-第12章-二叉搜索树:随机二叉搜索树数据结构C++实现(前中后序遍历,插入,搜索,前后毗邻元素,最大最小值)
- Cordova进阶:插件开发
- Oracle 12.2新特性掌上手册
- OkHttp源码解析(二)
- loadrunner 场景设计-添加Windows Resources计数器
- 10款热门儿童APP中有8款存在被二次打包的风险! [APP安全报告第23期]
- 《算法导论》第12章 二叉搜索树 个人笔记
- ajax异步请求提交上传图片表单并预览图片
- URL URI URN之间的关系和区别
- 我的C#学习之出发
- Memory Notification: Library Cache Object loaded into SGA / ORA-600 [KGL-heap-size-exceeded]
- Unbound classpath container错误解决
- nginx-rtmp源码概述
- centos 6.5 上编译安装mysql 5.7.18
- error C2440 无法转换到 AFX_PMSG mfc自定义信号及实现 PostMessage FindWindow