AVL 트리는 왼쪽 및 오른쪽 하위 트리의 높이를 확인하고 차이가 1 이하인지 확인합니다. 이 차이를 균형 요소라고 합니다.>
예를 들어, 다음 트리에서 첫 번째 트리는 균형을 이루고 다음 두 트리는 균형이 맞지 않습니다 -
두 번째 트리에서 C의 왼쪽 서브트리는 높이가 2이고 오른쪽 서브트리는 높이가 0이므로 차이는 2입니다. 세 번째 트리에서 A의 오른쪽 서브트리는 높이가 2이고 왼쪽이 누락되어 있으므로 0입니다. , 그리고 그 차이는 다시 2입니다. AVL 트리는 차이(균형 계수)가 1일 수 있도록 허용합니다.
BalanceFactor = height(left-sutree) − height(right-sutree)
왼쪽 및 오른쪽 하위 트리의 높이 차이가 1보다 크면 일부 회전 기술을 사용하여 트리가 균형을 이룹니다.
이 메소드를 정의하고 클래스도 초기화합시다 -
예시
class AVLTree { constructor() { // Initialize a root element to null. this.root = null; } getBalanceFactor(root) { return this.getHeight(root.left) - this.getHeight(root.right); } getHeight(root) { let height = 0; if (root === null) { height = -1; } else { height = Math.max(this.getHeight(root.left), this.getHeight(root.right)) + 1; } return height; } } AVLTree.prototype.Node = class { constructor(data, left = null, right = null) { this.data = data; this.left = left; this.right = right; } };