数据结构之二叉树扩展AVL,B-,B+,红黑树

1、AVL

 1.基本概念

  AVL是平衡二叉查找树,它或者是一颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。

  若将二叉树结点上的平衡因子BF(Balance Factor)定义为该结点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有结点的平衡因子只能是-1,0,1。 

 2.性质

   平衡二叉查找树,在添加或者删除的结点的过程中,如果失去平衡,则需要进行平衡调整。调整的过程中,要保持根大于左,小于右的特性。

 3.应用场景

   最早的平衡二叉树之一。应用相对其他数据结构比较少。windows对进程地址空间的管理用到了AVL树。

 4.扩展  

  以后遇到再说。

2、B-

 1.基本概念

  B-树是一种平衡的多路查找树。B-树中所有结点孩子结点个数的最大值称为B-树的阶,通常用m表示,从查找效率考虑,要求m>=3。

  一颗m阶的B-树,或者为空树,或为满足下面特性的m叉树:

  (1)树中每个结点至多有m课子树。

  (2)若根结点不是叶子结点,则至少有两颗子树。

  (3)除根之外的所有非叶子结点至少有m/2(向上取整)颗子树。

  (4)所有的非叶子结点内关键字互不相等,且从小到大排列。

  (5)所有叶子结点都出现在同一层次上,并且不带信息(可以用空指针表示),可以看做查找失败到达的位置。

    如图,m为3,3阶B-树

      

  

 2.性质

  (1)B-树中,具有n个关键字的结点含有n+1个分支。

  (2)m阶B-树中,每个结点(除根结点以外)中,关键字的个数是{m/2(向上取整)-1}<= n <= m-1。根结点的关键字个数是1<= n <=m-1。

  (3)在B-树中,下层结点的关键字取值总是落在 由上层关键字所划分的区间内。

    下图,如每个结点的结构,n为关键字的个数,P该节点的孩子结点,P1的取值范围 是小于K1,P2的取值范围 是大于K1 小于K2 依次类推

    

 3.应用场景

   MongoDB为什么使用B-树,可以从它的设计角度来考虑,它并不是传统的关系性数据库,而是以Json格式作为存储的nosql,目的就是高性能,高可用,易扩展。它摆脱了关系模型,MongoDB 是聚合型数据库,而 B-树恰好 key 和 data 域聚合在一起。MongoDB使用B-树,所有节点都有Data域,只要找到指定索引就可以进行访问,无疑单次查询平均快于Mysql(但侧面来看Mysql至少平均查询耗时差不多)。

  尽可能少的磁盘 IO 是提高性能的有效手段。

 4.扩展

  对于B-树的插入操作,B-的插入总是发生在叶子结点上,为了保持B-树的特性,有结点拆分(取中间关键字,独立成根结点或并入根结点)。

  对于B-树的删除操作,为了保持B-树的特性和删除的操作应发生在最下层的叶子结点上,有与叶子结点交换关键字,有向兄弟结点借关键字,有结点合并的操作。

可以参考https://blog.csdn.net/qq_23217629/article/details/52510485

3、B+

 1.基本概念

   

 2.性质

 

 3.应用场景

   B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。这就决定了B+树更适合用来存储外部数据,也就是所谓的磁盘数据。

 4.扩展

4、红黑树

  

 1.基本概念

 

 2.性质

 

 3.应用场景

 

 4.扩展

原文地址:https://www.cnblogs.com/weiziqiang/p/9038318.html

时间: 2024-11-09 00:58:35

数据结构之二叉树扩展AVL,B-,B+,红黑树的相关文章

AVL树,红黑树,B-B+树,Trie树原理和应用

前言:本文章来源于我在知乎上回答的一个问题 AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中? 看完后您可能会了解到这些数据结构大致的原理及为什么用在这些场景,文章并不涉及具体操作(如插入删除等等) 目录 AVL树 AVL树原理与应用 红黑树 红黑树原理与应用 B/B+树 B/B+树原理与应用 Trie树 Trie树原理与应用 AVL树 简介: AVL树是最早的自平衡二叉树,在早期应用还相对来说比较广,后期由于旋转次数过多而被红黑树等结构取代(二者都是用来搜索的),AVL树内

高级树、AVL 树和红黑树

高级树.AVL 树和红黑树 二叉树遍历 Pre-order/In-order/Post-orde 前序(Pre-order):根-左-右 中序(In-order):左-根-右 后序(Post-order):左-右-根 示例代码 def preorder(self, root): if root: self .traverse_path.append(root.val) self .preorder(root.left) self .preorder(root.right) def inorder

平衡二叉树(AVL)与红黑树

一.AVL树性质 1.本身首先是一棵二叉搜索树. 2.带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1. 也就是说,AVL树,本质上是带了平衡功能的二叉查找树(二叉排序树,二叉搜索树). AVL树的查找.插入和删除在平均和最坏情况下都是O(logn).如果在AVL树中插入或删除节点后,使得高度之差大于1.此时,AVL树的平衡状态就被破坏,它就不再是一棵二叉树:为了让它重新维持在一个平衡状态,就需要对其进行旋转处理. 二.红黑树性质 红黑树是每个节点都带有颜色属性的二叉查找树

红黑树一:从二叉树、2-3树到红黑树,一步步讲解红黑树的来源

目录 1 引言 2 从二叉查找树到红黑树的演变 2.1 二叉查找树 2.2 平衡二叉查找树 2.3 2-3树 2.4 红黑树 1 引言 RB-Tree,即红黑树,它的定义如下: 这是一颗二叉树,且每个节点要么是红色.要么是黑色 根节点是黑色 叶子节点也是黑色的,且叶子节点不存储数据,即叶子节点是nil空节点 不能出现连续的红色节点,即相邻的红色节点必须被黑色节点隔开 任何一个节点到达其任意一个叶子节点均包含相同数目的黑色节点 单看上面的定义,大家肯定跟我一样一头雾水,别急,下面我们从最简单的二叉

查找二,二叉树查找与2-3树红黑树

BST: 每个节点的键,都大于其左自述中的任意节点的键,而小于有字数的任意结点的键. 部分实现 get(Node x , Key key){ if(x == null) return null; cmp = key.compareTo(x.key); if(cmp<0) retrun get(x.right,key); else if(cmp>0) retrun get(x.left,key); else return x.val; } 2-3树红黑树: 属于平衡查找树,为了希望保持二分查找树

AVL树、红黑树以及B树介绍

简介 首先,说一下在数据结构中为什么要引入树这种结构,在我们上篇文章中介绍的数组与链表中,可以发现,数组适合查询这种静态操作(O(1)),不合适删除与插入这种动态操作(O(n)),而链表则是适合删除与插入,而查询效率则就比较慢了,本文要分享学习的树就是为了平衡这种静态操作与动态操作的差距. 一.二叉查找树 简介 满足下面条件就是二叉查找树 任意节点左子树不为空,则左子树的值均小于根节点的值. 任意节点右子树不为空,则右子树的值均大于于根节点的值. 任意节点的左右子树也分别是二叉查找树. 没有键值

红黑树、B(+)树、跳表、AVL等数据结构,应用场景及分析,以及一些英文缩写

在网上学习了一些材料. 这一篇:https://www.zhihu.com/question/30527705 AVL树:最早的平衡二叉树之一.应用相对其他数据结构比较少.windows对进程地址空间的管理用到了AVL树 红黑树:平衡二叉树,广泛用在C++的STL中.map和set都是用红黑树实现的.我们熟悉的STL的map容器底层是RBtree,当然指的不是unordered_map,后者是hash. B/B+树用在磁盘文件组织 数据索引和数据库索引 Trie树 字典树,用在统计和排序大量字符

平衡二叉搜索树(AVL树,红黑树)数据结构和区别

平衡二叉搜索树(Balanced Binary Search Tree) 经典常见的自平衡的二叉搜索树(Self-balancing Binary Search Tree)有 ① AVL树 :Windows NT 内核中广泛使用 ② 红黑树:C++ STL(比如 map.set )Java 的 TreeMap.TreeSet.HashMap.HashSet  Linux 的进程调度  Ngix 的 timer 管理 1 AVL树  vs  红黑树 ①AVL树 平衡标准比较严格:每个左右子树的高度

【算法导论学习-26】 二叉树专题4:红黑树、AVL树、B-Tree

1.   红黑树(Red-Black Trees) 参考<算法导论>P308页,红黑树是一种对树的高度要求最灵活的准平衡二叉搜索树.五大属性: 1: Every node is either RED or BLACK. 2: The root is black. 3: Every leaf(NIL) is black.  (The NIL is the sentinel.) 4: If a node is RED, then both its children areblack. 5: For