删除一个节点同样有可能改变树的平衡性,而且,删除所造成的不平衡性比插入所造成的平衡性的修正更加复杂。
化繁为简是算法分析中一个常用的方法。下面我们将欲删除节点分为三大类:欲删除节点为叶子节点、欲删除节点只有一个子节点和欲删除有两个子节点。
而欲删除节点有两种可能的颜色,也需要分别对待。
为简化讨论,我们以欲删除节点在左侧的情况为例进行修正,如果欲删除节点在右侧,进行镜像地修正操作即可。...
分类:
其他好文 时间:
2015-07-31 09:04:59
阅读次数:
100
红黑树目的在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。效率查找,插入和 删除 时间复杂度:O(log n) ,n 是树中元素数目。性质
节点是红色或黑色。
根节点是黑色。
每个叶节点(NIL节点,空节点)是黑色的。
每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。...
分类:
其他好文 时间:
2015-07-30 21:33:43
阅读次数:
110
笔者最近遇到一个非常有意思的bug,贴出来和大家分享下。
那是一个温暖的早晨,阳光晒的人很舒服。一封bug邮件像一片叶子飘到我的邮箱。一番交流,笔者确认负责的Widget开关在Android5.0以上系统没有作用。相信很多做过移动网络开关的朋友都知道,在ConnectivityManager中有两个方法setMobileDataEnabled和getMobileDataEnabled通过反射来控制...
分类:
移动开发 时间:
2015-07-30 21:24:19
阅读次数:
178
题意:给你一些圆圈的圆心坐标和半径,保证这些圆圈是包含或者相离的。现在两个人做博弈操作,拿掉一个那么这个所包含的都要移除掉。两个人一直拿下去,直到某个人找不到一个可以移除的圈他就输了。思路学习的姿势。这是一个树上删边游戏模型;
首先按照半径升序排序,然后对于每一个圆找第一个包含它的圆,然后连一条边。建树完成。
叶子节点的SG值为0;
中间节点的 SG 值为它的所有子节点的 SG 值加 1 后的...
分类:
其他好文 时间:
2015-07-29 19:16:27
阅读次数:
101
索引常用的数据结构为B+树。结构如下如上图,是一颗b+树,关于b+树的定义可以参见B+树,这里只说一些重点,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块1包含数据项17和35,包含指针P1、P2、P3,P1表示小于17的磁盘块,P2表示在17和35之间的磁盘块,P3表示大于35的磁盘块。真实的数据存在于叶子节点即3、5、9、10、13、1...
分类:
数据库 时间:
2015-07-29 17:22:10
阅读次数:
211
面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低了耦合。 但在实际应用中,有好多对象具有相同或者相似的属性,比如有一个对象 果树(FruitTree),它有成员属性叶子(Leaf),会开花(Flower),有树干(Stem),....
测试环境:windows 7 vs2010
主要实现二叉树的初始化递归和非递归遍历,层次遍历,获取叶子节点的个数,获取树的高度以及镜像树,部分代码也参考了互联网上的相关资料。
源程序:
BinaryTreeNode.h
#ifndef _BINARY_NODE
#define _BINARY_NODE
#include
using namespace std;
template
st...
分类:
编程语言 时间:
2015-07-28 21:11:12
阅读次数:
130
题目地址:ZJU 3886
这个题需要想到一点,因为对一个数x不断取模的话,而且设定他小于模才会进行取余操作的话,那么最多只会进行logx次,因为每次取模都会使x最少折半。然后想到了这点就很好做了。对于区间取模更新操作可以直接暴力更新,维护一个最大值,如果这个区间的最大值小于模的话, 就不用继续向叶子更新了。然后其他的大于模的就更新到叶子节点。
然后对于NicoNumber来说,只有6,2的幂次...
分类:
其他好文 时间:
2015-07-27 23:14:55
阅读次数:
425
复习数据结构,建树和树的三种遍历二叉排序树的查询,插入二叉排序树插入一个节点,此节点一定是叶子节点#include#include#include#include#include#include#include#include#include#includeusing namespace std;t...
分类:
编程语言 时间:
2015-07-27 11:05:05
阅读次数:
207
B+树在数据库中的应用flyfish 2015-7-6B+树在数据库中的应用重要是实现索引应用方式一ID为表的主键,利用主键建立一棵B+树
叶子结点存储记录的地址
应用方式二ID为表的主键,建立一棵B+树
叶子结点存储了整条记录...
分类:
数据库 时间:
2015-07-26 21:02:15
阅读次数:
167