平衡二叉树,又称AVL树指的是左子树上的所有结点的值都比根结点的值小,而右子树上的所有结点的值都比根结点的值大,且任意一个结点左 子树与右子树的高度差最大为1。 2.2、重点操作 发生的情况:当对二叉树进行插入或者删除的时候,有可能造成二叉搜索树失去平衡,造成搜寻效率低落的情况。 2.2.1、插入: 当向二叉...
红黑树是保持“黑平衡”的二叉树:对于黑平衡是指,从根节点开始搜索,一直搜索到叶子节点,所经历的黑色节点的个数是一样的。 黑平衡二叉树,严格意义上,不是平衡二叉树:左右子树的高度差可能大于1,时间复杂度是O(logn),最大高度:2logn,红黑树不会像二分搜索树一样退化为链表。 查找的时间上面会比AVL树慢一点,...
由红黑树的概念得知,红黑树方案和AVL树的方案对比,我们可以得知: AVL树是一颗宁折不弯的树:它容不下一点偏差,AVL树任何时候都是一颗绝对的平衡搜索二叉树;但是也由于这个特性,当我们面对频繁的修改时,它将会频繁的调整(旋转)自己以达到,标准平衡搜索二叉树的要求,这会导致效率的下降。 红黑树是一颗懂得卸力的树,...
要看红黑树,得先了解二叉搜索树。 二叉搜索树,也叫二叉查找树,Binary Sort Tree or Binary Search Tree ,都是BST。 基本性质: 1.定义空树是一颗二叉查找树 2.左子树节点的所有节点的值都小于根节点的值。 3.右子树所有节点的值都大于根节点的值。 4.左右子树都是BST(递归定义) 5.中序遍历是升序。 基于...
二叉搜索树(BST)是二叉树的一种,但是只允许在左侧储存比父节点小的数据,在右侧储存比父节点大的数据。 和链表一样,通过引用来表示节点之间的关系,在双向链表里,每个节点有俩引用,一个指向上一个节点,一个指向下一个节点,对于二叉搜索树也使用同样方式,不同的地方是一个指向左侧节点,一个指向右侧节点(树中会称...
本文主要回顾二叉树、二叉搜索树、平衡二叉搜索树、AVL树、B树、红黑树。包含具体的实现代码、部分方法的注释。 树间的继承关系: BinaryTree实现BinaryTreeInfo接口 BinarySearchTree继承BinaryTree BalanceBinarySearchTree继承BinarySearchTree AVLTree和RBTree继承BalanceBinarySearchTree ...
2.平衡二叉树追求绝对平衡,条件比较苛刻,实现起来比较麻烦,每次插入新节点之后需要旋转的次数不能预知。 红黑树颜色的作用 红黑树使用红黑二色进行“着色”,目的是利用颜色值作为二叉树的平衡对称性的检查,只要插入的节点“着色”满足红黑二色的规定,最短路径与最长路径不会相差的太远,红黑树的节点分布就能大体上达...
[1]二叉树的种类是随着不断优化而更加严格定义的 二叉查找树(二叉排序树,二叉搜索树):即本质是二叉树,其左子节点小于根节点,右子节点大于根节点,理想时间复杂度为o(logn),但当极端情况下,二叉查找树退化为链表结构后会使复杂度上升为o(n)级别二叉平衡树AVL:在满足二叉查找树的条件下,避免了其极端情况...
二叉搜索树 它是一种节点值之间具有一定数量级次序的二叉树,对于树中每个节点: 若其左子树存在,则其左子树中每个节点的值都不大于该节点值; 若其右子树存在,则其右子树中每个节点的值都不小于该节点值。 平衡二叉树定义(AVL): 它或者是一颗空树,或者具有以下性质的二叉排序树:它的左子树和右子树的深度之差(...
是所谓的“平衡”问题; AVL平衡二叉搜索树 定义:平衡二叉树或为空树,或为如下性质的二叉排序树: (1)左右子树深度之差的绝对值不超过1; (2)左右子树仍然为平衡二叉树. 平衡因子BF=左子树深度-右子树深度. 平衡二叉树每个结点的平衡因子只能是1,0,-1。若其绝对值超过1,则该二叉排序树就是不平衡的。