//右单旋private void rotateRight(TreeNode parent){TreeNode subL = parent.left;TreeNode subLR = subL.right;parent.left = subLR;if(subLR != null){//只有当subLR不为空时,才能修改其父亲节点subLR.parent = parent;}subL.right = parent;//在修改parent的父亲节点时,必须先记录其父亲节点,以便修...
// AVL树的节点(内部类)classAVLTreeNode<TextendsComparable<T>>{Telement;// 值int height;// 高度AVLTreeNode<T>left;// 左孩子AVLTreeNode<T>right;// 右孩子publicAVLTreeNode(Tkey,AVLTreeNode<T>left,AVLTreeNode<T>right){this.element=key;this.left=left;this.right=right;this.height=0;}}...
public class TreeNode { private int data; private TreeNode leftChild; private TreeNode rightChild; private int height; public int getData() { return data; } public void setData(int data) { this.data = data; } public TreeNode getLeftChild() { return leftChild; } public void setLeftChild...
Node<T> l = tree.left; if (height(l.right) > height(l.left)) tree = leftRightRotation(tree); else tree = leftLeftRotation(tree); } } else {// tree是对应要删除的节点 // tree的左右子树非空 if (tree.left != null && tree.right != null) { if (height(tree.left) > height(tr...
java——平衡二叉树 AVLTree、AVLMap、AVLSet 平衡二叉树:对于任意一个节点,左子树和右子树的高度差不能超过1 packageDate_pacage;importjava.util.ArrayList;publicclassAVLTree<KextendsComparable<K>, V>{privateclassNode{publicK key;publicV value;publicNode left, right;publicintheight;publicNode(K key, ...
本章源码:https://github.com/fuzhengwei/java-algorithms/tree/main/data-structures/src/main/java/stack 动画演示:https://visualgo.net/zh/bst?slide=1 —— AVL树初次理解还是比较困难的,可以结合学习内容的同时做一些动画演示。 1. 左旋 图解左旋操作;它就是一种摘链更换调整节点的处理过程,小傅哥把它分解...
packagecom.yky.algorithmFourth.dataStructure.tree.avl;importjava.util.StringJoiner;/** * @Author: yky * @CreateTime: 2021-01-27 * @Description: 二叉平衡树(AVL) */publicclassAVLTreeDemo{ publicstaticvoidmain(String[] args){ //int[] arr = {4, 3, 6, 5, 7, 8};//int []arr = {10...
public class Tree<T extends Comparable<T>> { private static final int MAX_HEIGHT_DIFFERENCE = 1; private Node<T> root; class Node<KT> { KT key; Node<KT> left; Node<KT> right; int height = 1; public Node(KT key, Node<KT> left, Node<KT> right) { ...
java public class AVLTree<T extends Comparable<? super T>> { private TreeNode<T> root; private static class TreeNode<T> { T val; TreeNode<T> left; TreeNode<T> right; int height; TreeNode(T val) { this.val = val; this.height = 1; ...
我们之前写过文章叫做BST二分搜索树,这种数据结构有一个缺点就是会退化为链表形式,到这导致了我们的树结构发挥不出来它应有的优势。 从上图可以发现如果按照顺序进行添加操作,那么二分搜索树就会退化为链表形式,树结构也就失去了它的意义。 AVL(Adelson-Velsky-Landis Tree)是以创造者的名字命名的。这种树结构就是...