diff --git a/avl.js b/avl.js index b618142..6128e33 100644 --- a/avl.js +++ b/avl.js @@ -18,14 +18,15 @@ class AVLTree extends RankedTree { return true; } - recursive = recursive ?? true; - - let differences = nodeDifferences(node); - differences.sort(); - if (!differences.equals([1, 1]) && !differences.equals([1, 2])) { + let differences = nodeDifferences(node).sort(); + if ( + (!differences.equals([1, 1]) && !differences.equals([1, 2])) || + node.rank != 1 + Math.max(...differences) + ) { return false; } + recursive = recursive ?? true; return ( !recursive || (this.isCorrectNode(node.left) && this.isCorrectNode(node.right)) @@ -121,6 +122,8 @@ class AVLTree extends RankedTree { break; default: rotateRight(y); + this.record(); + newRoot = rotateLeft(x); break; } diff --git a/wavl.js b/wavl.js index aece6ef..b62fc0f 100644 --- a/wavl.js +++ b/wavl.js @@ -14,8 +14,9 @@ class WAVLTree extends AVLTree { return node.rank == 0; } + recursive = recursive ?? true; return ( - !(recursive ?? true) || + !recursive || (this.isCorrectNode(node.left) && this.isCorrectNode(node.right)) ); }