ServiceNow interview question

Implement a Binary Search Tree

Interview Answer

Anonymous

25 July 2020

class Node { constructor (value) { this.value = value; this.left = null; this.right = null; } } class BinarySearchTree { constructor () { this.root = null; } insert (value) { let newNode = new Node(value); if (this.root === null) { this.root = newNode; return; } insertNode(this.root); function insertNode (currentNode) { if (newNode.value currentNode.value) { prevNode = currentNode; (currentNode) ? removeNode(currentNode.right) : console.log("Node not found in the list"); } else { if (currentNode.left === null && currentNode.right === null) { (currentNode.value === prevNode.left) ? prevNode.left = null : prevNode.right = null; } else if (currentNode.left === null) { prevNode.left = currentNode.right; } else if (currentNode.right === null) { prevNode.right = currentNode.left; } else { let aux; if (value < prevNode.value) { prevNode.left = currentNode.left; aux = prevNode.left; } else { prevNode.right = currentNode.left; aux = prevNode.right; } while (aux.right) { aux = aux.right; } aux.right = currentNode.right; currentNode = null; } } } } traversal(method) { if (this.root === null) { console.log("Tree is empty"); return; } switch (method) { case 'inorder': (function inorder (node) { if (node !== null) { inorder(node.left); console.log(node.value); inorder(node.right); } })(this.root); break; case 'preorder': (function preorder (node) { if (node !== null) { console.log(node.value); preorder(node.left); preorder(node.right); } })(this.root); break; case 'postorder': (function postorder (node) { if (node !== null) { postorder(node.left); postorder(node.right); console.log(node.value); } })(this.root); break; default: (function inorder (node) { if (node !== null) { inorder(node.left); console.log(node.value); inorder(node.right); } })(this.root); } } } let bstObj = new BinarySearchTree();