之前看HashMap的源码,看到一种说法觉得可以记住:任何数据结构都是由数组和链表组合演变而成。 二叉树其实就是一种链表结果。任一节点记录下左右子节点,从而组成了树的结构。 一、二叉树 树结构,对任一节点,左子树节点小于当前节点,右子树节点大于当前节点。 二、平衡二叉树 任一节点的左子树和右子树的高 ...
分类:
其他好文 时间:
2020-05-25 19:43:43
阅读次数:
72
红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但是这样在动态插入中保持树的完美平衡代价太高,所以,我们稍微放松逛一下限制,希望找到一个能在对数时间内完成查找的数据结构。这个时候,红黑树站了出来。阅读以下需要了解普通二叉树的插入以及删除操作。红黑树是在普通二叉树上,对没个节点添加一个颜色属性形成的,同时整个红黑二叉树需要同时满足一下五条性质
分类:
其他好文 时间:
2020-05-22 10:12:24
阅读次数:
85
package com.xd.leetcode.shu; /** * created by lianzhen on 2020-03-10 10:27. describe:平衡二叉树的构建 * * LL:插入的结点在左子树的左边导致失衡:右旋(顺时针旋转) * RR: 插入的结点在右子树的右边导致失衡 ...
分类:
其他好文 时间:
2020-05-21 23:47:40
阅读次数:
97
题目: 将有序数组转换为二叉搜索树:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 思路: 因为输入是递增的数组,为了转换成二叉搜索树,因此需要找到整个树的根节点,之后使用递归来的得到每个子树 ...
分类:
编程语言 时间:
2020-05-19 10:54:56
阅读次数:
56
红黑树的性质 性质1.节点是红色或黑色。 性质2.根节点是黑色。 性质3.每个叶子节点都是黑色的空节点(NIL节点)。 性质4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) 性质5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 这些约束强制了 ...
分类:
其他好文 时间:
2020-05-12 11:40:19
阅读次数:
78
题目链接:https://leetcode cn.com/problems/ping heng er cha shu lcof/ 递归 ...
分类:
其他好文 时间:
2020-05-06 22:05:33
阅读次数:
79
题意描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 解题思路 一、递归 1. 从上向下遍历,求出每个节点的左右子树的深度 2. 根据左右子树的深度差判断是否为AVL树 二、非递归 使用非递归计算每个节点左右子树的深度,根据深度差判断 ...
分类:
其他好文 时间:
2020-05-05 00:50:56
阅读次数:
76
平衡二叉树 二叉树中所有结点的平衡因子 的绝对值均小于等于 ,即:$|BF|\leq1$。平衡因子是,结点的左子树高度减去右子树的高度。平衡因子 绝对值大于 表示二叉树失衡。 插入失衡 两种情况: 1. 结点的平衡因子是 ,向该结点的左子树插入结点,该结点的平衡因子变为 ,导致失衡; 2. 结点的平 ...
分类:
其他好文 时间:
2020-05-05 00:33:31
阅读次数:
56
一、二叉查找/搜索/排序树BST (binary search/sort tree) 或者是一棵空树; 或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值; 若它的右子树上所有结点的值均大于它的根节点的值; 它的左、右子树也分别为二叉排序树。 二、平衡二叉树( ...
分类:
其他好文 时间:
2020-05-04 21:26:00
阅读次数:
67
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 来源:力扣(LeetCode) 解法一:记录树高度 /** * Definition for a binary tree node. * struct T ...
分类:
其他好文 时间:
2020-05-04 17:24:08
阅读次数:
52