Skip to content

Instantly share code, notes, and snippets.

@kshirish
Created August 13, 2024 03:44
Show Gist options
  • Save kshirish/23b4e01d2cf5ad02bcae8714d217314a to your computer and use it in GitHub Desktop.
Save kshirish/23b4e01d2cf5ad02bcae8714d217314a to your computer and use it in GitHub Desktop.
Binary Tree Node - Insert, Delete
// Root
// |
// |
// 11 12
// | |
// | |
// 13 14 15 16
// |
// |
// 17 18
class TreeNode {
constructor(value) {
this.value = value;
this.left = null;
this.right = null;
}
}
const rootNode = new TreeNode('Root');
rootNode.left = new TreeNode(11);
rootNode.right = new TreeNode(12);
rootNode.left.left = new TreeNode(13);
rootNode.left.right = new TreeNode(14);
rootNode.right.left = new TreeNode(15);
rootNode.right.right = new TreeNode(16);
rootNode.left.left.left = new TreeNode(17);
rootNode.left.left.right = new TreeNode(18);
function bfs(rootNode) {
if(!rootNode) {
return [];
}
let queue = [rootNode]
let results = [];
while(true) {
const node = queue.shift();
if(!node) {
break;
}
results.push(node.value);
if(node.left) {
queue.push(node.left)
}
if(node.right) {
queue.push(node.right)
}
}
return results;
}
function insertNode(rootNode, value) {
if(!rootNode) {
return;
}
let queue = [rootNode]
let results = [];
while(true) {
const node = queue.shift();
if(!node) {
break;
}
results.push(node.value);
if(node.left) {
queue.push(node.left)
} else {
node.left = new TreeNode(value)
break;
}
if(node.right) {
queue.push(node.right)
} else {
node.right = new TreeNode(value)
break;
}
}
}
function deleteNode(rootNode, value) {
if(!rootNode) {
return;
}
let queue = [rootNode]
let results = [];
while(true) {
const node = queue.shift();
if(!node) {
break;
}
results.push(node.value);
if(node.left) {
if(node.left.value === value){
node.left = null;
} else{
queue.push(node.left);
}
}
if(node.right) {
if(node.right.value === value){
node.right = null;
} else{
queue.push(node.right);
}
}
}
}
bfs(rootNode);
insertNode(rootNode, 20)
bfs(rootNode);
deleteNode(rootNode, 13)
bfs(rootNode);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment