Skip to content

Commit ee0a6d3

Browse files
committed
finished remove function
1 parent 5ef2fe9 commit ee0a6d3

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

src/typescript/BST.ts

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
4848
setParent(node: BinaryTree) {
4949
this.parent = node;
5050
}
51+
clearParent() {
52+
this.parent = null;
53+
}
5154

5255
removeChild(node: BinaryTree) {
5356
if (this.left && node.getRoot() === this.left.getRoot()) {
@@ -57,6 +60,11 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
5760
}
5861
}
5962

63+
removeAllChildren() {
64+
this.left = null;
65+
this.right = null;
66+
}
67+
6068
insertLeft(num: number) {
6169
if (this.left === null) {
6270
this.left = new BinaryTree(num);
@@ -182,8 +190,26 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
182190
tree.setRoot(tree.getRight().getRoot());
183191
tree.removeChild(tree.getRight());
184192
} else if (tree.getRight() == null && tree.getLeft()) {
185-
tree.setRoot(tree.getLeft().getRoot());
186-
tree.removeChild(tree.getLeft());
193+
let new_left = tree.getLeft().getLeft();
194+
let new_right = tree.getLeft().getRight();
195+
196+
let new_root = tree.getLeft().getRoot() || tree.getRoot();
197+
198+
console.log(new_root);
199+
200+
tree.setRoot(new_root);
201+
if (new_right) {
202+
tree.setRight(new_right);
203+
} else {
204+
tree.removeAllChildren();
205+
}
206+
207+
if (new_left) {
208+
tree.setLeft(new_left);
209+
} else {
210+
tree.removeAllChildren();
211+
}
212+
tree.clearParent();
187213
} else {
188214
let minimum = minRoot(tree.getRight())
189215
remove(tree, minimum);
@@ -212,14 +238,14 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
212238
drawNode(ctx, tree.getLeft().getRoot(), leftPosition);
213239
connectPoints(ctx, rootPosition, leftPosition);
214240
drawTree(ctx, tree.getLeft(), canvasWidth, scale, i + 1, leftPosition);
215-
}
241+
}
216242
if (tree.getRight()) {
217243
let rightPosition = new Vector2D(rootPosition.x + (100 / (i + 1)) * scale, rootPosition.y + 50);
218244

219245
drawNode(ctx, tree.getRight().getRoot(), rightPosition);
220246
connectPoints(ctx, rootPosition, rightPosition);
221247
drawTree(ctx, tree.getRight(), canvasWidth, scale, i + 1, rightPosition);
222-
}
248+
}
223249
}
224250
}
225251
function updateTraversals(tree: BinaryTree) {

0 commit comments

Comments
 (0)