算法--平衡二叉树AVL原理分析以及代码实现

前文介绍了 , 二叉树、二叉排序树 , 需要了解的不妨关注下小JIA 。
 

算法--平衡二叉树AVL原理分析以及代码实现

文章插图
【算法--平衡二叉树AVL原理分析以及代码实现】 
 
AVL是一种高度平衡的二叉排序树 。对于任意节点左子树与右子树高度差不超过1 , AVL的高度与节点数量为O(logn)关系 。平衡因子等于左子树高度减去右子树高度 。AVL所有节点的平衡因子只可能是-1、0、1 。因此当添加元素或删除元素时有可能会破会这种平衡 , 所以需要维护 。失去平衡主要有四种情况 , 分别为LL、LR、RR和RL 。
 
AVL 的节点定义public class AVLTreeNode<T extends Comparable<T>> { private T key; //关键字(键值) private int height; //高度 private AVLTreeNode<T> left; //左孩子 private AVLTreeNode<T> right; //右孩子 public AVLTreeNode(T key, AVLTreeNode<T> left, AVLTreeNode<T> right) { this.key = key; this.left = left; this.right = right; this.height = 0; } ...... }


    推荐阅读