写在前面 主要描述为什么有了二叉查找树/平衡树还需要红黑树 1、二叉查找树的缺点 二叉查找树,相信大家都接触过,二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如图 基于二叉查找树的这种特点,我们在查找某个节点的时候,可以采取类似于二分查找的思想,快速找到某个节点。n ...
分类:
其他好文 时间:
2019-09-16 10:13:25
阅读次数:
93
自平衡二叉查找树 它是为了解决二叉查找树的查找时间复杂度最差是O(n)的问题而发明的数据结构算法。 BST的查找运行时间和BST的高度有关。一个树的高度指的是从树的根开始所能到达的最长的路径长度。 因为二叉搜索树的结构可能是一个链表,在这种情况下,在 BST 中查找节点与在数组(Array)中查找就 ...
分类:
其他好文 时间:
2019-09-13 22:19:32
阅读次数:
177
红黑树及其基本操作 红黑树的定义 ? 红黑树是一种自平衡二叉查找树。它相比于平衡二叉树的优点在于,其的特性可以让其在任何条件下保持树的高度小于等于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
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