当前位置: 首页 > news >正文

深圳专业做网站哪家好国内最新的新闻

深圳专业做网站哪家好,国内最新的新闻,广州网站建设信息科技有限公司,东莞哪家做网站好这里只是大概描述了一下AVL的树的插入,以及红黑树的定义,并没有实现为代码,这个在以后的学习中如果遇到会更加深入的学习,因为我学习数据结构的目的在于如果学习INNODB代码的时候遇到不太陌生,但是在INNODB代码中并为找…
这里只是大概描述了一下AVL的树的插入,以及红黑树的定义,并没有实现为代码,这个在以后的学习中如果遇到会
更加深入的学习,因为我学习数据结构的目的在于如果学习INNODB代码的时候遇到不太陌生,但是在INNODB代码
中并为找到AVL树的应用,而红黑树的应用仅仅用于数据恢复的时候,所以占时先了解概念和简单的操作,如果日后
需要再深入学习,其实数据库也是各种各样的数据结构的综合应用,
比如INNODB:大量的链表,伙伴算法,B+树,红黑树.......
其实学习源代码很多先决条件至少包含
C/C++精通,数据结构算法熟悉或者精通,LINUX系统编程熟悉或者精通,数字逻辑等。
这些东西对于我来说都要从头学习,其中任何一门弄到精通都不是易事,而综合起来
更是难于登天,对我这个门外汉更难,所以很多东西我只能了解,学习到在深入研究,
这些东西我已经学习了1年半了这一年半基本没看数据库的东西全在看这些,还有基本有一点
熟悉了,但是时间对我来说很少,不能像专业的开发一样专心的研究这些,因为我只是
一个DBA,还是一个曾经不懂代码的ORACLE DBA,如果一直研究这些数据库的老本都要
忘光,失去了竞争力,准备给自己2年的时间还剩下半年了,2年后继续研究数据库如果遇
到不懂的再补补,至少经过这一段时间学习学习到了很多以前不懂的东西,能够从一个软件
的角度来看待数据库,这就是进步。
好吧还是言归正传

AVL(self-balancing binary search tree)他就为了解决排序二叉树(BST)的补足,

也就是BST树没有再平衡原理会出现某些极端情况,如下插入1 2 3 4 5 为顺序的

数据就会出现如下:

可以看到排序二叉树搜索45的时候,搜索的层次明显高于平衡二叉树,

AVL树通过自我旋转来完成再平衡原理,其中是根据最小不平衡子树的

平衡因子来判断旋转的方向,所谓不平衡因子就是 左子树深度-右子树深度

的差值,平衡二叉树一个重要的概念就是各个节点的平衡因子只能是-1,0,1

三个值,如果有多个不平衡的子树那么需要找到最小的不平衡子树为旋转

的基础,如果解决了最小不平衡子树的问题其他节点的不平衡性也就解决了

总体的原则

1、如果平衡因子为负数 则进行左旋转(逆时针)

2、如果平衡因子为正数 这进行右旋转(顺时针)


如下图加深理解


但是需要分为4种情况

1、简单左转如:


节点1的平衡因子为-2 需要逆时针左旋转


2、简单右转如:



 


节点3平衡因子为2需要顺时针右转


3、先左转再右转
可以看到节点的5的平衡因子为2,整体需要顺时针右旋转,但是我们发现节点1平衡因为-1,和结点的5的平衡因子符号不同,我们需要对节点进行逆时针左旋然后在对5进行右旋



 



这个时候节点3出现了3个分支,节点4需要进行处理,我们知道实际上43的直接前驱,那么就行如下变化:



4、先右转再左转


可以看到节点2平衡因子为-2,整体需要逆时针左旋转,但是我们发现节点6的平衡因子为1,和结点2的平衡因为符号不同,我们需要先对节点6进行右旋,然后对节点2进行左旋转




这个时候节点4出现了3个分支,节点4需要进行处理,我们知道实际上32的直接后继,那么就行如下变化:



其他操作先不讨论,下面了解一下红黑树我用INNODB中的注释给出:
/**********************************************************************//**
Definition of a red-black tree
==============================
A red-black tree is a binary search tree which has the following
red-black properties:
   1. Every node is either red or black.
   2. Every leaf (NULL - in our case tree->nil) is black.
   3. If a node is red, then both its children are black.
   4. Every simple path from a node to a descendant leaf contains the
      same number of black nodes.  
   from (3) above, the implication is that on any path from the root
   to a leaf, red nodes must not be adjacent.
   However, any number of black nodes may appear in a sequence.
 */

/** Red black tree color types */
enum ib_rbt_color_t {
IB_RBT_RED,
IB_RBT_BLACK
};

/** Red black tree node */
struct ib_rbt_node_t {
ib_rbt_color_t color; /* color of this node */
ib_rbt_node_t* left; /* points left child */
ib_rbt_node_t* right; /* points right child */
ib_rbt_node_t* parent; /* points parent node */
char value[1]; /* Data value */
};

实际上中文的限制就是:
1、每个结点要么是红的要么是黑的。  
2、根结点是黑的。  
3、每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。  
4、如果一个结点是红的,那么它的两个儿子都是黑的。  
5、对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。 
由于这些限制的出现使得红黑树也是一种平衡的二叉树,在LINUX中也有应用,他的主要
操作也是插入,平衡,删除,平衡等。
具体可以参考:
http://blog.csdn.net/v_july_v/article/details/6105630
http://blog.csdn.net/eson_15/article/details/51144079
已经MYSQL innodb 源码中的红黑树实现,我大概看了一下插入和旋转也不是很难主要是逻辑要清楚。
这里就不具体解释了,因为我也是了解了一下。
在大概说一下INNODB中的红黑树是恢复的时候才用到如下注释:
ib_rbt_t* flush_rbt; /*!< a red-black tree is used
exclusively during recovery to
speed up insertions in the
flush_list. This tree contains
blocks in order of
oldest_modification LSN and is
kept in sync with the
flush_list.
Each member of the tree MUST
also be on the flush_list.
This tree is relevant only in
recovery and is set to NULL
once the recovery is over.
Protected by flush_list_mutex */

Inserts a modified block into the flush list in the right sorted position.
This function is used by recovery, because there the modifications do not
necessarily come in the order of lsn's. */


http://www.lbrq.cn/news/2789101.html

相关文章:

  • 专业外贸网站建设 诚信 青岛云南网络推广服务
  • 网站备案信息更改网络营销软件大全
  • 网站开发可选择的方案全网自媒体平台大全
  • 泰安新闻频道在线直播重庆网站优化排名推广
  • 网站开发南昌百度最新秒收录方法2021
  • 长春做网站哪家公司好sem是什么电镜
  • 无锡网站制作哪里实惠口碑营销案例
  • 网站制作最郑州百度推广托管
  • 怎么做网店百度移动端关键词优化
  • 中日最新军事新闻靠谱的seo收费
  • wordpress godaddy东莞seo建站排名
  • 网站建设需要多少技术北京互联网公司
  • 王悦做网站奉化seo页面优化外包
  • 中装建设为什么不涨seo狂人
  • 邯郸网站设计定制百度seo代理
  • 网站建设与维护制作网页成都网站关键词推广
  • 做企业门户网站都信息互联网推广
  • 建设行官方网站类似58的推广平台有哪些平台
  • 上海 网站公安备案唐山建站公司模板
  • 湖南省建筑信息网网站优化种类
  • 学做美食的网站网站推广费用一般多少钱
  • 网站设计团队有哪些职业搜索引擎有哪些类型
  • 北京网站建设外包高报师培训机构排名
  • 计算机专业代做毕设哪个网站靠谱网上互联网推广
  • 国外做ppt的网站有哪些网络游戏排行榜百度风云榜
  • 建网站的大公司建站的公司
  • 谷歌seo是啥北京seo优化排名推广
  • 网站图片一般的像素新开传奇网站发布站
  • 西安又出现疫情了么百度搜索seo
  • 婚庆行业网站建设方案1企业培训课程种类
  • SED项目复现学习实录
  • ansible playbook 实战案例roles | 实现基于firewalld添加端口
  • Qt——文件操作
  • 安装DDNS-go
  • 计算机大数据毕业设计推荐:基于Spark的气候疾病传播可视化分析系统【Hadoop、python、spark】
  • 力扣 hot100 Day77