From 44449b1fdd56fc9b959ae28774d1d76ad67ca0ac Mon Sep 17 00:00:00 2001 From: Henrik Christensen Date: Sat, 23 Oct 2021 14:38:42 +0200 Subject: [PATCH 1/3] updated dfsInorder --- .../tree_traversal/code/javascript/tree.js | 25 +++++++++++-------- contents/tree_traversal/tree_traversal.md | 6 ++--- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/contents/tree_traversal/code/javascript/tree.js b/contents/tree_traversal/code/javascript/tree.js index b6705bfdd..bd5185dd5 100644 --- a/contents/tree_traversal/code/javascript/tree.js +++ b/contents/tree_traversal/code/javascript/tree.js @@ -20,17 +20,22 @@ function dfsPostorder(tree) { } function dfsInorder(tree) { - if (!tree) { - return; + 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"); } - - if (tree.children.length > 2) { - 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..e5d10fe02 100644 --- a/contents/tree_traversal/tree_traversal.md +++ b/contents/tree_traversal/tree_traversal.md @@ -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:22-39, 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:41-48, 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:50-57, lang:"javascript"](code/javascript/tree.js) {% sample lang="py" %} [import:63-75, lang:"python"](code/python/Tree_example.py) {% sample lang="scratch" %} From c1fc4aefc32e470f82e6cce491cc4af8bd1d5be5 Mon Sep 17 00:00:00 2001 From: Henrik Christensen Date: Sat, 23 Oct 2021 15:10:00 +0200 Subject: [PATCH 2/3] added if-not-tree checks --- contents/tree_traversal/code/javascript/tree.js | 12 ++++++++++++ contents/tree_traversal/tree_traversal.md | 10 +++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/contents/tree_traversal/code/javascript/tree.js b/contents/tree_traversal/code/javascript/tree.js index bd5185dd5..6670fe739 100644 --- a/contents/tree_traversal/code/javascript/tree.js +++ b/contents/tree_traversal/code/javascript/tree.js @@ -10,16 +10,28 @@ 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); } function dfsInorder(tree) { + if (!tree) { + return; + } + switch (tree.children.length) { case 2: dfsInorder(tree.children[0]); diff --git a/contents/tree_traversal/tree_traversal.md b/contents/tree_traversal/tree_traversal.md index e5d10fe02..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-39, 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:41-48, 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:50-57, 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" %} From 85652304cc696ff2bb96e74026ea4656e5113b9e Mon Sep 17 00:00:00 2001 From: Henrik Christensen Date: Sat, 23 Oct 2021 15:18:32 +0200 Subject: [PATCH 3/3] added name to contributors list --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) 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