diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index e3707e290..9b2c1b460 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -60,3 +60,4 @@ This file lists everyone, who contributed to this repo and wanted to show up her - Ridham177 - Hugo Salou - Dimitri Belopopsky ++ Henrik Abel Christensen diff --git a/contents/tree_traversal/code/javascript/tree.js b/contents/tree_traversal/code/javascript/tree.js index b6705bfdd..6670fe739 100644 --- a/contents/tree_traversal/code/javascript/tree.js +++ b/contents/tree_traversal/code/javascript/tree.js @@ -10,11 +10,19 @@ function createTree(rows, children) { } function dfsPreorder(tree) { + if (!tree) { + return; + } + console.log(tree.id); tree.children.forEach(dfsPreorder); } function dfsPostorder(tree) { + if (!tree) { + return; + } + tree.children.forEach(dfsPostorder); console.log(tree.id); } @@ -24,13 +32,22 @@ function dfsInorder(tree) { return; } - if (tree.children.length > 2) { - throw new Error("Postorder traversal is only valid for binary trees"); + switch (tree.children.length) { + case 2: + dfsInorder(tree.children[0]); + console.log(tree.id); + dfsInorder(tree.children[1]); + break; + case 1: + dfsInorder(tree.children[0]); + console.log(tree.id); + break; + case 0: + console.log(tree.id); + break; + default: + throw new Error("Postorder traversal is only valid for binary trees"); } - - dfsInorder(tree.children[0]); - console.log(tree.id); - dfsInorder(tree.children[1]); } function dfsIterative(tree) { diff --git a/contents/tree_traversal/tree_traversal.md b/contents/tree_traversal/tree_traversal.md index e03f09652..f758fd3de 100644 --- a/contents/tree_traversal/tree_traversal.md +++ b/contents/tree_traversal/tree_traversal.md @@ -60,7 +60,7 @@ Because of this, the most straightforward way to traverse the tree might be recu {% sample lang="java" %} [import:21-27, lang:"java"](code/java/Tree.java) {% sample lang="js" %} -[import:12-15, lang:"javascript"](code/javascript/tree.js) +[import:12-19, lang:"javascript"](code/javascript/tree.js) {% sample lang="py" %} [import:18-23, lang:"python"](code/python/Tree_example.py) {% sample lang="scratch" %} @@ -114,7 +114,7 @@ Now, in this case the first element searched through is still the root of the tr {% sample lang="java" %} [import:34-41, lang:"java"](code/java/Tree.java) {% sample lang="js" %} -[import:17-20, lang:"javascript"](code/javascript/tree.js) +[import:21-28, lang:"javascript"](code/javascript/tree.js) {% sample lang="py" %} [import:26-31, lang:"python"](code/python/Tree_example.py) {% sample lang="scratch" %} @@ -163,7 +163,7 @@ In this case, the first node visited is at the bottom of the tree and moves up t {% sample lang="java" %} [import:48-62, lang:"java"](code/java/Tree.java) {% sample lang="js" %} -[import:22-34, lang:"javascript"](code/javascript/tree.js) +[import:30-51, lang:"javascript"](code/javascript/tree.js) {% sample lang="py" %} [import:34-46, lang:"python"](code/python/Tree_example.py) {% sample lang="scratch" %} @@ -221,7 +221,7 @@ In code, it looks like this: {% sample lang="java" %} [import:65-79, lang:"java"](code/java/Tree.java) {% sample lang="js" %} -[import:36-43, lang:"javascript"](code/javascript/tree.js) +[import:53-60, lang:"javascript"](code/javascript/tree.js) {% sample lang="py" %} [import:49-60, lang:"python"](code/python/Tree_example.py) {% sample lang="scratch" %} @@ -272,7 +272,7 @@ And this is exactly what Breadth-First Search (BFS) does! On top of that, it can {% sample lang="java" %} [import:81-95, lang:"java"](code/java/Tree.java) {% sample lang="js" %} -[import:45-52, lang:"javascript"](code/javascript/tree.js) +[import:62-69, lang:"javascript"](code/javascript/tree.js) {% sample lang="py" %} [import:63-75, lang:"python"](code/python/Tree_example.py) {% sample lang="scratch" %}