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 =...