题目: 将有序数组转换为二叉搜索树:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 思路: 因为输入是递增的数组,为了转换成二叉搜索树,因此需要找到整个树的根节点,之后使用递归来的得到每个子树 ...
分类:
编程语言 时间:
2020-05-19 10:54:56
阅读次数:
56
MySQL的InnoDB索引结构采用B+树,B+树什么概念呢,二叉树大家都知道,我们都清楚随着叶子结点的不断增加,二叉树的高度不断增加,查找某一个节点耗时就会增加,性能就会不断降低,B+树就是解决这个问题的。 B树和B+树 在一棵M阶B树中,每个节点最多有 M 1 个关键字,根节点最少可以只有一个关 ...
分类:
数据库 时间:
2020-05-17 12:58:34
阅读次数:
86
学习时间 新增代码 博客发量 知识总结 第八周 5小时 50行 3 学习了数据结构的树与二叉树,了解了创树的代码,了解了满二叉树和二叉树区别,以及二叉树的性质 高度为k的二叉树最多有个结点 高度为k的二叉树最少有k个结点 具有n(n>=1)个结点的二叉树的高度最多为n 具有n(n>=1)个结点的二叉 ...
分类:
其他好文 时间:
2020-05-10 21:33:27
阅读次数:
65
平衡二叉树 二叉树中所有结点的平衡因子 的绝对值均小于等于 ,即:$|BF|\leq1$。平衡因子是,结点的左子树高度减去右子树的高度。平衡因子 绝对值大于 表示二叉树失衡。 插入失衡 两种情况: 1. 结点的平衡因子是 ,向该结点的左子树插入结点,该结点的平衡因子变为 ,导致失衡; 2. 结点的平 ...
分类:
其他好文 时间:
2020-05-05 00:33:31
阅读次数:
56
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 来源:力扣(LeetCode) 解法一:记录树高度 /** * Definition for a binary tree node. * struct T ...
分类:
其他好文 时间:
2020-05-04 17:24:08
阅读次数:
52
题目: 有序链表转换二叉搜索树:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 思路: 看到二叉树要想到用递归的思想,为了找到根节点,使用双指针法,快指针是慢指针速度的二倍,快指针到 ...
分类:
编程语言 时间:
2020-05-03 21:42:05
阅读次数:
94
多路查找树 虽然二叉树的效率很高,但是也存在一些问题!二叉树是需要加载进内存的,倘若结点少无所谓,若有一亿个结点,就会有海量数据,会对速度造成影响 1. 多叉树 在二叉树中,每个结点规定最多有两个子结点,若允许每个结点可以有更多的数据项和子结点,那么就是多叉树 多叉树通过重新组织结点,减少树的高度, ...
分类:
编程语言 时间:
2020-04-24 20:11:25
阅读次数:
64
前面我们说到的二叉查找树,可以看到根结点是初始化之后就是固定了的,后续插入的数如果都比它大,或者都比它小,那么这个时候它就退化成了链表了,查询的时间复杂度就变成了O(n),而不是理想中O(logn),就像这个样子 如果我们有一个平衡机制,让这棵树可以动起来,比如将4变成根结点,是不是查询效率又可以提 ...
分类:
编程语言 时间:
2020-04-24 01:05:46
阅读次数:
62
二叉查找树是最常用的一种二叉树,它支持快速插入、删除、查找操作,各个操作的时间复杂度跟树的高度成正比,理想情况下,时间复杂度是 O(logn)。 不过,二叉查找树在频繁的动态更新过程中,可能会出现数的高度远大于 log2^n 的情况,从而导致各个操作的效率下降。极端情况下,二叉树会退化为链表,时间复 ...
分类:
编程语言 时间:
2020-04-23 00:21:58
阅读次数:
86