From c3a9a48d994e2693b66d76c5bc8743f4595495a2 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Sat, 7 May 2022 16:53:50 +0200 Subject: [PATCH] fix(wavl): fix delete and syntax error Signed-off-by: Matej Focko --- wavl.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/wavl.js b/wavl.js index 0665e17..aece6ef 100644 --- a/wavl.js +++ b/wavl.js @@ -97,7 +97,7 @@ class WAVLTree extends AVLTree { return; } - let y = parent.left === x ? parent.right : parent.left; + y = parent.left === x ? parent.right : parent.left; xDiff = nodeDifference(x, parent); yDiff = nodeDifference(y, parent); @@ -136,11 +136,16 @@ class WAVLTree extends AVLTree { } deleteFixup(y, parent) { - let z = y ? y : parent; - - if (nodeDifferences(z).equals([2, 2])) { - z.demote(); + if (nodeDifferences(y).equals([2, 2])) { + y.demote(); this.record(); + + parent = y.parent; + } else if (nodeDifferences(parent).equals([2, 2])) { + parent.demote(); + this.record(); + + parent = parent.parent; } if (!parent) {