- 博客(17)
- 资源 (29)
- 收藏
- 关注
原创 平衡二叉树之一(基本性质、查询、添加) .
平衡二叉树(Balanced BinaryTree)又被称为AVL树。它具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。一、平衡二叉树的基本性质根据二叉树的性质高度为h的AVL树,节点数N最多为2h-1;其最少节点树为(((1 + √5) / 2)h+2 - ((1 - √5) / 2)h+2)/ √5 - 1。最少节点数n
2013-12-26 15:29:55 1065
原创 平衡二叉树之二(删除节点) .
类似于添加操作,从平衡二叉树中删除节点也分为两步,第一步完成节点的删除,第二步找到因为删除而导致不满足平衡二叉树要求的子树并对其进行调整。一、 删除节点从平衡二叉树中删除节点更为复杂。首先第一步需要找到要删除的节点x,并分情况进行处理:如果要删除的节点为叶子节点,就找到了要删除的节点如果要删除的节点为只有一棵子树的节点就找到了要删除的节点如果要删除的节点既有左子树,又有右子树,
2013-12-26 15:27:35 1073
转载 平衡二叉树
对于二叉查找树,尽管查找、插入及删除操作的平均运行时间为O(logn),但是它们的最差运行时间都是O(n),原因在于对树的形状没有限制。平衡二叉树又称为AVL树,它或者是一棵空树,或者是有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左右子树的深度之差的绝对值不超过1。二叉树的的平衡因子BF为:该结点的左子树的深度减去它的右子树的深度,则平衡二叉树的所有结点的平衡因子为只可能是:-1、
2013-12-25 20:05:30 847
原创 平衡二叉树AVL的笔记
二叉树左子树都小于根节点,右子树都大于根节点。可以动态维护这棵树(因为是树结构,可以有限步完成插入),所以是动态查找算法。时间复杂度为O(logn)在46.5%的情况下,需要把二叉树平衡化成“平衡二叉树”。平衡二叉树平衡二叉树(Balanced>平衡二叉树算法思想若 向平衡二叉树中插入一个新结点后破坏了平衡二叉树的平衡性。首先要找出插入新结点后失去平衡的最小子树根结
2013-12-25 20:04:34 735
原创 平衡二叉树的生成理论
本文由作者收集整理所得,作者不保证内容的正确行,转载请标明出处。作者:关新全1、AVL的插入算法描述在平衡的二叉排序树T上插入一个关键码为kx的新元素,递归算法可描述如下:(一) 若T为空树,则插入一个数据元素为kx的新结点作为T的根结点,树的深度增1;(二) 若kx和T的根结点关键码相等,则不进行插入;(三) 若kx小于T的根结点关键码
2013-12-25 20:02:07 1195 1
原创 动画演示平衡二叉树旋转
转自:http://2002qiqi.blog.163.com/blog/static/17489036200912111929241/ 我们知道在二叉查找树中,如果插入元素的顺序接近有序,那么二叉查找树将退化为链表,从而导致二叉查找树的查找效率大为降低。如何使得二叉查找树无论在什么样情况下都能使它的形态最大限度地接近满二叉树以保证它的查找效率呢?前苏联科学家G.M. Adelson-
2013-12-25 19:47:36 6514
原创 AVL Tree 平衡二叉树基本插入删除节点功能的实现 .
简述:实现AVL 树,主要是两个功能 : 插入某节点和删除某节点AVL Tree的定义,1. 是一棵二叉搜索树(故而每个节点是惟一的, 如果出现重复数字会破坏平衡树的算法)2. 每个节点左右子树的高度之差(平衡因子)相差最多为1实现:为了使所得的二叉树为平衡二叉树,首先在BSTNode中加了一个计算节点高度的方法getHeight(), 当两个节点高度相
2013-12-25 19:42:53 1029
原创 平衡二叉树 1
平衡二叉树又称AVL树。它或者是颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树节点的平衡因子BF定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有节点的平衡因子只可能为-1,0,1.只要二叉树上有一个节点的平衡因子的绝对值大于1,那么这颗平衡二叉树就失去了平衡。假设我们已经有棵平衡二叉树,现在让我们来
2013-12-25 19:34:20 604
转载 平衡二叉树
形态匀称的二叉树称为平衡二叉树 (Balanced binary tree) ,其严格定义是: 一棵空树是平衡二叉树;若 T 是一棵非空二叉树,其左、右子树为 TL 和 TR ,令> (a)平衡二叉树 (b)非平衡二叉树 图8.3 平衡二叉树与非平衡二叉树相应地定义>动态平衡技术 1.动态平
2013-12-25 19:32:32 697
转载 死亡的骆驼 震撼了谁
话说一只骆驼在沙漠里跋涉着。正午的太阳像一个大火球晒得又饿又渴,它焦躁万分,一肚子火不知道该往哪儿发才好。 正在这个时候,一块玻璃碎片把他的脚掌割破了。。。。。。 疲惫又焦躁的骆驼顿时火冒三丈抬起脚狠狠地把碎片踢了出去,却不小心将脚掌划开了一道深深的口子,鲜红的血液顿时染红了沙粒。 生气的骆驼一瘸一拐地走着,血迹起来了空中的秃鹫,它们在天空中盘旋着,骆驼被吓得狂背起来。。。。。。
2013-12-13 19:47:35 666
原创 C++单例模式
#include using namespace std; //单例类的C++实现 class Singleton { private: Singleton();//注意:构造方法私有 virtual ~Singleton(); static Singleton* instance;//惟一实例 int var;//
2013-12-10 14:03:25 543
转载 深入浅出单例模式---不仅仅是单例
前言:看到我的标题你也许会很奇怪,明明是讨论单例模式,为什么又说不仅仅是单例模式呢?图样图森破!我在这里想和大家分享的不仅仅是JAVA设计模式中的单例模式(Singleton),还有C++中的单例模式,以及单例模式的原理。总之一句话,不服来辩!对于很多从事JAVA编程或者C++编程超过1年的工友来说,就单例模式而言可谓是熟悉的不能再熟悉了吧?So easy!简单的说,就是保持对一个实例的全局范
2013-12-10 13:32:42 556
转载 将string转换成char* (转)
string 是c++标准库里面其中一个,封装了对字符串的操作把string转换为char* 有3中方法:1.data如:string str="abc";char *p=str.data();2.c_str如:string str="gdfd"; char *p=str.c_str();3.copy比如string str="he
2013-12-10 11:39:31 793
转载 C++类静态成员的初始化
记住:通常静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域操作符来指出静态成员所属的类.但如果静态成员是整型或是枚举型const,则可以在类声明中初始化!!!#includeiostream>usingnamespacestd;classtest{public:staticint num;};inttest::num=
2013-12-09 17:28:39 1109
原创 c++迭代器的使用与简介
除了使用下标来访问vector对象的元素外,标准库还提供了另一种检测元素的方法:使用迭代器(iterator)。迭代器是一种允许程序员检查容器内元素,并实现元素遍历的数据类型。 标准库为每一种标准容器(包括vector)定义了一种迭代器类型。迭代器类型提供了比下标操作更一般化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。因为迭代器对所有的容器都适用,现代C+
2013-12-09 15:44:32 542
原创 C++ map的使用
来源:(http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html) - C++ map的基本操作和使用_Live_新浪博客 Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring;
2013-12-03 09:41:01 471
原创 C++ map的基本操作和用法
1、map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。2、map的功能 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,0
2013-12-03 09:40:23 466
诺基亚C500拍照无声补丁及签名专家
2013-06-13
shockwaveinstaller
2011-11-07
ico图标 全部 包含各种图标
2011-08-25
常见 725个 ico 图标 18M
2011-08-25
数据采集客户端完整 MFC C++
2011-08-25
ComboBox带查找功能
2011-08-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人