红黑树及其基本操作 红黑树的定义 ? 红黑树是一种自平衡二叉查找树。它相比于平衡二叉树的优点在于,其的特性可以让其在任何条件下保持树的高度小于等于log n,所以其即使在最坏条件下对于增删查改这样的基本操作也能保持O(log n)的时间复杂度;另外,相比于严格平衡的AVL树,红黑树是一种不严格的平衡 ...
分类:
其他好文 时间:
2019-09-11 21:28:51
阅读次数:
102
前戏 我们大家都知道动态查找树能够提高查找效率,比如:二叉查找树,平衡二叉查找树,红黑树。他们查找效率的时间复杂度O(log2n),跟树的深度有关系,那么怎么样才能提高效率呢?当然最快捷的方式就是减少树的深度了。那么怎么减少树的深度呢?为了解答这个问题,我们慢慢来看,先看个实际问题吧。 问题背景 在 ...
分类:
其他好文 时间:
2019-09-10 15:05:05
阅读次数:
132
java中集合包括三大类,它们分别是Map、List和Map。 我们为什么要设定不同的集合类型,是为了放置不同的数据,而且不同类型用在不同的场合。这三个类放在何处呢,它们放在java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的主要实现类:HashSet和TreeSe ...
分类:
编程语言 时间:
2019-09-10 14:41:31
阅读次数:
94
知识摘要: 1.二叉搜索树(又叫:二叉排序树,二叉查找树): 遵循: Tree.left.val<Tree.val<Tree.right.val. 所以它的中序遍历一定是一个有序列。 2.其他一些树: 满二叉树:从上往下,除了叶子结点外,其他结点的左右子节点都存在。 完全二叉树:比满二叉树少几个叶子 ...
分类:
其他好文 时间:
2019-09-05 23:06:46
阅读次数:
91
一、B树 B树是一种多叉平衡查找树,由于是多叉结构,对于元素数量非常多的情况下,树的深度不会像二叉结构那么大,可以保证查询效率。 二、B+树 B+是是B树的一种变形, 1、特点: (1)、所有叶子结点包含全部关键字信息,及指向含有这些关键字记录的指针,且叶子节点中关键字进行有序链接。 (2)、非叶子 ...
分类:
编程语言 时间:
2019-09-03 11:19:32
阅读次数:
104
1 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 2 思路和方法 平衡二叉树,又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找, ...
分类:
其他好文 时间:
2019-08-28 01:27:40
阅读次数:
102
尝试一下用Java实现二叉搜索树/二叉查找树,记录自己的学习历程。 1. 首先先来设计实现一下节点Node。 💡一个二叉树的节点需要以下几个元素: key 关键字 value 节点的值(key也可以代替value) parent 父节点 leftChildren 左儿子节点 rightChildr ...
分类:
编程语言 时间:
2019-08-24 23:03:11
阅读次数:
106
维基百科对B树的定义为“在计算机科学中,B树(B tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。与自平衡二叉查找树不同,B 树为系统最优化 大块数 ...
分类:
其他好文 时间:
2019-08-24 22:39:42
阅读次数:
132
什么是索引? 索引在mysql中也叫做键,是存储引擎快速找到记录的一种数据结构。 目的:提高查询效率 本质:不断缩小获取数据的范围,找到最终结果。 索引数据结构 b+树应运而生(B+树是通过二叉查找树,再由平衡二叉树,B树演化而来) 一步步确定数据范围,层级越高,查询越慢,层级越低,查询越快。 叶子 ...
分类:
其他好文 时间:
2019-08-23 22:33:49
阅读次数:
107
看官,不要生气,我没有骂你也没有鄙视你的意思,今天就是想单纯的给大伙分享一下树的相关知识,但是我还是想说作为一名程序员,自己心里有没有点树?你会没点数吗?言归正传,树是我们常用的数据结构之一,树的种类很多有二叉树、二叉查找树、平衡二叉树、红黑树、B树、B+树等等,我们今天就来聊聊二叉树相关的树。 什 ...
分类:
其他好文 时间:
2019-08-23 00:11:15
阅读次数:
67