Skip to content

Commit 2d526ed

Browse files
committed
started node removal function
1 parent 8cc9e0a commit 2d526ed

File tree

2 files changed

+37
-8
lines changed

2 files changed

+37
-8
lines changed

src/pages/index.astro

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ import { Icon } from 'astro-icon/components'
2424
</InfoPanel>
2525
<InfoPanel>
2626
<h2><Icon name="material-symbols:arrow-cool-down-rounded" />Removing from a Binary Tree</h2>
27-
<form id="insert-form" onsubmit="return false;" method="post" name="myForm">
27+
<form id="remove-form" onsubmit="return false;" method="post" name="myForm2">
2828
<div>
2929
<label for="fname">Value you want to remove</label>
30-
<input id="insert-form-input" type="text" name="fname" placeholder="Input any integer that is in the existing tree" required />
30+
<input id="remove-form-input" type="text" name="fname" placeholder="Input any integer that is in the existing tree" required />
3131
</div>
32-
<input class="submit-button" type="submit" value="Insert">
32+
<input class="submit-button" type="submit" value="Remove">
3333
</form>
3434
</InfoPanel>
3535
<InfoPanel>

src/typescript/BST.ts

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,25 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
160160
}
161161
}
162162
}
163+
function deepRight(tree: BinaryTree) {
164+
if (tree.getRight()) {
165+
return deepRight(tree.getRight())
166+
} else {
167+
return tree.getRoot()
168+
}
169+
}
170+
function remove(tree: BinaryTree, value: number) {
171+
if (tree.getRoot() === value) {
172+
tree.setRoot(deepRight(tree));
173+
} else {
174+
if (tree.getLeft()) {
175+
remove(tree.getLeft(), value)
176+
}
177+
if (tree.getRight()) {
178+
remove(tree.getRight(), value)
179+
}
180+
}
181+
}
163182
function drawTree(ctx: CanvasRenderingContext2D, tree: BinaryTree, canvasWidth: number, scale: number, i=0, rootPosition: any=null) {
164183
if (tree) {
165184
if (rootPosition === null) {
@@ -233,15 +252,25 @@ const canvas = document.getElementById("main-canvas") as HTMLCanvasElement;
233252

234253
drawTree(ctx, tree, canvas.width, scale);
235254

236-
var number = document.getElementById('insert-form-input') as HTMLInputElement;
237-
var numberForm = document.getElementById('insert-form') as HTMLElement;
255+
var insertNumber = document.getElementById('insert-form-input') as HTMLInputElement;
256+
var insertNumberForm = document.getElementById('insert-form') as HTMLElement;
257+
258+
var removeNumber = document.getElementById('remove-form-input') as HTMLInputElement;
259+
var removeNumberForm = document.getElementById('remove-form') as HTMLElement;
238260

239261
// if (numberForm.addEventListener){
240262

241263
// }
242-
numberForm.addEventListener("submit", function (){
243-
console.log(number.value);
244-
insert(tree, parseInt(number.value))
264+
insertNumberForm.addEventListener("submit", function (){
265+
console.log(insertNumber.value);
266+
insert(tree, parseInt(insertNumber.value))
267+
drawTree(ctx, tree, canvas.width, scale);
268+
updateTraversals(tree);
269+
}, false);
270+
271+
removeNumberForm.addEventListener("submit", function (){
272+
console.log(removeNumber.value);
273+
remove(tree, parseInt(removeNumber.value))
245274
drawTree(ctx, tree, canvas.width, scale);
246275
updateTraversals(tree);
247276
}, false);

0 commit comments

Comments
 (0)