asdasfklj

by María Fernández

HTML

<div>
   <p>In order: <span id="in-order"></span></p>
   <p>Pre order: <span id="pre-order"></span></p>
   <p>Pre order: <span id="post-order"></span></p>
   <p>Depths:<span id="li-depths"></span></p>
   <p>Common ancestor: <span id="common-ancestor"></span></p>
   <p>In order BST : <span id="in-order-bst"></span></p>
   <p>Depths BST:<span id="li-depths-bst"></span></p>
</div>

JavaScript

class Node {
	constructor(value) {
  	this.value = value;
    this.left = null;
    this.right = null;
  }
}

/* Binary tree
    1
  2   3
4  7 9
*/
const root = new Node(1);
root.left = new Node(2);
root.left.left = new Node(4);
root.left.right = new Node(7);
root.right = new Node(3);
root.right.left = new Node(9);

// in-order traversal: left - current - right
const printed = [];
function inOrderTraversal(node, array) {
	if (!node) return;
  inOrderTraversal(node.left, array);
  array.push(node.value);
  inOrderTraversal(node.right, array);
}
inOrderTraversal(root, printed);
document.getElementById('in-order').innerHTML = printed.toString();

// pre-order traversal: current - left - right
const printedPreOrder = [];
function preOrderTraversal(node) {
	if (!node) return;
	printedPreOrder.push(node.value);
  preOrderTraversal(node.left);
  preOrderTraversal(node.right);
}
preOrderTraversal(root);
document.getElementById('pre-order').innerHTML = printedPreOrder.toString();

// post-order traversal: left - right - current
const printedPostOrder = [];
function postOrderTraversal(node) {
	if (!node) return;
  postOrderTraversal(node.left);
  postOrderTraversal(node.right);
  printedPostOrder.push(node.value);
}
postOrderTraversal(root);
document.getElementById('post-order').innerHTML = printedPostOrder.toString();

// all depths:
function printAllDepths(root, elemID) {
	const allDepths = [];
	if (root) {
  	let currentDepth = [root];
    while(currentDepth.length > 0) {
      // push current depth
      allDepths.push(currentDepth.map(node => node.value));
      // Extract all children for next iteration
      const children = [];
      currentDepth.forEach(node => {
      	if (node.left) { children.push(node.left); }
        if (node.right) { children.push(node.right); }
      });
      currentDepth.length = 0;
      currentDepth = children;
    }
  }
  const liDepths = document.getElementById(elemID);
  allDepths.forEach(depth => {
  	const li =...