Let's assume that we are working with the following binary tree:
terminal1 / \ / \ 2 3 / / / / 4 5 / / \ / / \ 6 7 8 \ / \ \ / \ 9 10 11
If we want to print the nodes in-order traversal, we expect:
6 -> 9 -> 4 -> 2 -> 1 -> 7 -> 5 -> 10 -> 8 -> 11 -> 3
Let's define a node:
jsxconst node = (value, left, right) => ({value: value, left: left, right: right});
Let's define the tree:
jsx// We create the nodes from left to right and from top to bottom // We assign -1 if the node has no children const tree = [node(1, 2, 3), node(2, 4, -1), ... , node(11, -1, -1)];
How to iterate through the whole tree:
jsxconst inOrderTraversal = (node, tree) => { let nextLeftNode = tree[node - 1].left; let nextRightNode = tree[node - 1].right; // Look for left children if(nextLeftNode !== -1) inOrderTraversal(nextLeftNode, tree); // Print current node console.log(node); // Look for right children if(nextRightNode !== -1) inOrderTraversal(nextRightNode, tree); } inOrderTraversal(1, tree); // 6, 9, 4, 2, 1, 7, 5, 10, 8, 11, 3
Hi, I'm Erik, an engineer from Barcelona. If you like the post or have any comments, say hi.