[数据结构] 二叉搜索树 前驱和后继的经验总结
2017-05-08 14:35
197 查看
前言
最近在看算法导论关于二叉搜索树的相关章节,关于其前驱和后继的小节,我想了好久,总结出了一点经验,想分享给大家,也是怕过一段时间自己忘记了,因此记录在此。后继
假设x为当前节点 y为x的后继结点总结为四种情况
x节点右节点不为NIL时 寻找x右子树中最小的节点
x节点右节点的左节点为NIL时,y为x.right 图(a)
x节点右节点左子树不为NIL时,在左子树中寻找最小的节点 图(b)
哎另一种情况不会说哎,如图(c) 图(d)
算法导论给出的伪代码
TREE-SUCCESSOR(x) if x.right ≠ NIL return TREE-MINIMUM(x.right) //图(a) 图(b)的情况 y = x.p while y ≠ NIL and x == y.right //图(c) 图(d) 和 没有后继节点的情况 x = y y = y.p return y
前驱
假设x为当前节点 y为x的前驱结点上图的四种情况正好与寻找后继结点的情况相反,这里就不再赘述了
伪代码
TREE-predecessor(x) if x.right ≠ NIL return TREE-MAXIMUM(x.left) //图(a) 图(b)的情况 y = x.p while y ≠ NIL and x == y.left //图(c) 图(d) 和 没有后继节点的情况 x = y y = y.p return y
参考
算法导论二叉搜索树相关文章推荐
- 数据结构学习->经验总结1
- Java 数据结构和经典算法经验总结
- D&F学数据结构系列——前驱和后继
- 数据结构编程笔记二十九:数据结构编程经验教训总结
- 别人总结的学习数据结构的经验
- 数据结构与算法分析(Java语言描述)(20)—— 二叉搜索树指定key的前驱、后继
- (Swift 实现)二叉搜索树 —— 创建,最大,最小,查找,插入,删除,前驱,后继,中序遍历
- 数据结构系统回顾与总结(3)(判断是否为同一棵二叉搜索树)
- 数据结构回顾和总结(二叉搜索树(BST)的基本操作)
- 求二叉搜索树任一节点的前驱后继节点
- 数据结构 二叉树 —— 寻找中序遍历的前驱后继
- Java 数据结构和经典算法经验总结
- arcims开发经验总结(3) (杂谈1)
- 转载:TonyBaoBao:在.NET中调用Oracle9i存储过程经验总结
- 关于解决WebSphere服务不能启动问题的几点经验总结
- 在.NET中调用Oracle9i存储过程经验总结
- 测试的一点经验总结
- SCWCD 考试经验总结[转帖]
- 关于ASP.NET在IIS一些问题的经验总结(zz)
- 关于ASP.NET在IIS一些问题的经验总结