class TreeNode { constructor(val) { this.val = val; this.left = null; this.right = null; } }
implement a queue
implement a stack
node,l. subtree, r. subtree
l.subtree, node, r.subtreethe left subtree contains values less than the root
l.subtree, r.subtree, node
BST Definition
insert: log(n)
search: log(n)
// This is easy to swap to a breadth-first approach by using a queue instead of a stack! // Instead of popping from the top, we can shift from the front function depthFirstIter(node) { let visited = new Set(); let stack = [ node ]; while (stack.length) { let node = stack.pop(); // if this node has already been visited, then skip this node if (visited.has(node.val)) continue; // otherwise it hasn't yet been visited, // so print it's val and mark it as visited. console.log(node.val); visited.add(node.val); // then add its neighbors to the stack to be explored stack.push(...node.neighbors); } }