平衡二叉树仍然是一棵二叉查找树,只是在其基础上增加了“平衡”要求平衡是指:对AVL树的任意结点来说,其左子树与右子树的高度之差的绝对值不超过1其中左子树与右子树的高度之差称为该结点的平衡因子由于需要对每个结点都得到平衡因子,因此需要在树的结构中加入一个变量height,用以记录以当前结点为根结点的子 ...
分类:
其他好文 时间:
2021-02-18 13:10:31
阅读次数:
0
背景知识: 完全二叉树:除了最后一层,所有层的节点数达到最大,与此同时,最后一层的所有节点都在最左侧。(堆使用完全二叉树) 满二叉树:所有层的节点数达到最大。一棵层数为 h 的满二叉树,其节点数为2^h - 1个。 思路1:层序遍历 或 递归 遍历整棵树。 但没用到 完全二叉树 的性质。。不可取 思 ...
分类:
其他好文 时间:
2020-12-29 11:35:11
阅读次数:
0
堆 堆:当一棵二叉树的每个结点都大于等于它的两个子结点时,它被称为堆有序。 命题O:根结点是堆有序的二叉树中的最大结点 二叉堆:一组能够用堆有序的完全的二叉树排序的元素,并在数组中按照层级存储(不使用数组的第一个位置)。 命题P:一棵大小为N的完全二叉树的高度为lgN。 堆有序上浮 由下至上的堆有序 ...
分类:
编程语言 时间:
2020-12-17 13:13:07
阅读次数:
6
二叉查找树: 优点:二分查找 缺点:最差情况变成了链表 平衡二叉树: 优点:树的高度差不超过1 缺点:每个节点存储存储的数据太少,每次从磁盘拿数据不够page的16kb,导致树的深度过大(瘦长型)。读不够 多路平衡查找树(B树):分叉数比关键字多1(通过树的合并和分裂来保证新加入的关键字的有序性) ...
分类:
数据库 时间:
2020-12-08 12:34:56
阅读次数:
9
Leetcode 108 将有序数组转换为二叉搜索树 数据结构定义: 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是: ...
分类:
编程语言 时间:
2020-12-05 11:08:08
阅读次数:
9
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/balanced-binary-tree 著作 ...
分类:
其他好文 时间:
2020-12-03 11:59:09
阅读次数:
6
108. 将有序数组转换为二叉搜索树 Difficulty: 简单 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树_每个节点 _的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是 ...
分类:
编程语言 时间:
2020-12-01 12:09:01
阅读次数:
6
二叉平衡树: 平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、T ...
分类:
其他好文 时间:
2020-09-17 12:00:19
阅读次数:
59
题目 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平 ...
分类:
编程语言 时间:
2020-09-16 12:21:04
阅读次数:
31
上节回顾 上一章我们介绍了二叉树,二叉搜索树相关的一些知识。 当一个二叉搜索树是一个满二叉树,或者是完美二叉树的时候可以计算一下二叉搜索树的查找,插入,删除的时间复杂度。 从代码来看它们的时间复杂度都是和树的高度相关的。 满二叉树的高度是$log_2(n + 1)$,完美二叉树的高度是$floor( ...
分类:
其他好文 时间:
2020-08-17 17:10:18
阅读次数:
56