2017年4月5日
摘要: 很久以前(八十年代),没有办法区分++和--操作符的前缀与后缀调用。这个问题遭到程序员的报怨,于是C++语言得到了扩展,允许重载increment 和 decrement操作符的两种形式。 然而有一个句法上的问题,重载函数间的区别决定于它们的参数类型上的差异,但是不论是increment或decre 阅读全文
posted @ 2017-04-05 14:41 莫水千流 阅读(4397) 评论(0) 推荐(0)
摘要: 前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree) 阅读全文
posted @ 2017-04-05 13:06 莫水千流 阅读(645) 评论(0) 推荐(0)
摘要: 下面对本算法做原理上的介绍: 1、 如何回溯修改祖先结点的平衡因子 我们知道,在AVL树上插入一个新结点后,有可能导致其他结点BF值的改变,哪些结点的BF值会被改变?如何计算新的BF值呢?要解决这些问题,我们必须理解以下几个要点: l 只有根结点到插入结(橙色结点)点路径(称为插入路径)上的结点的B 阅读全文
posted @ 2017-04-05 09:08 莫水千流 阅读(687) 评论(0) 推荐(0)
摘要: 树旋转是在二叉树中的一种子树调整操作, 每一次旋转并不影响对该二叉树进行中序遍历的结果. 树旋转通常应用于需要调整树的局部平衡性的场合. 树旋转包括两个不同的方式, 分别是左旋转和右旋转. 两种旋转呈镜像, 而且互为逆操作. 平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡 阅读全文
posted @ 2017-04-05 08:56 莫水千流 阅读(1153) 评论(0) 推荐(0)