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数据结构的示例,有任何问题可以评论区留言。