AVLtree(平衡二叉树)

AVL tree基本概念

AVL树前提是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1。

平衡因子BF(balance Factor):二叉树结点的左子树深度与右子树深度的值,AVL树上所有节点的BF只能是-1、0、1,如果二叉树上有一个节点的BF的绝对值大于1,那么这个二叉树就是不平衡的。

最小不平衡子树:距离插入节点最近的,且平衡因子的绝对值大于1的结点为根的子树,被称为最小不平衡子树。


左右旋转示意图,下面以左旋转作为示例(右旋同理)。

java 实现AVL tree数据结构

节点和数据结构定义

定义节点类,因为节点中存储的是字符串,所以继承了Comparable类重写了compareTo(Object object)方法便于后续节点插入AvlTree树时的大小比较。



定义AvlTree数据结构类

关键方法实现

右旋转方法实现

左旋转方法实现

获取平衡因子

节点数据插入的核心逻辑

测试结果




以上就是本次java实现AVLTree数据结构的示例,有任何问题可以评论区留言。

原文链接:,转发请注明来源!