From 942190bc60a254d5b87ee69c4aaffd9de3da9157 Mon Sep 17 00:00:00 2001 From: Gathros <6323830+Gathros@users.noreply.github.com> Date: Mon, 6 Aug 2018 17:57:46 +0100 Subject: [PATCH 1/3] Adding missing examples to tree_example.cpp --- .../tree_traversal/code/c++/tree_example.cpp | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/contents/tree_traversal/code/c++/tree_example.cpp b/contents/tree_traversal/code/c++/tree_example.cpp index 519ff374e..748d4e243 100644 --- a/contents/tree_traversal/code/c++/tree_example.cpp +++ b/contents/tree_traversal/code/c++/tree_example.cpp @@ -26,6 +26,34 @@ void dfs_recursive(node const& n) { } } +void dfs_recursive_postorder(node const& n) { + for (auto const& child : n.children) { + dfs_recursive_postorder(child); + } + std::cout << n.value << '\n'; +} + + +void dfs_recursive_inorder_btree(node const& n) { + switch (n.children_size) { + case 2: + dfs_recursive_inorder_btree(n.children[0]); + std::cout << n.value << '\n'; + dfs_recursive_inorder_btree(n.children[1]); + break; + case 1: + dfs_recursive_inorder_btree(n.children[0]); + std::cout << n.value << '\n'; + break; + case 0: + std::cout << n.value << '\n'; + break; + default: + std::cout << "This is not a binary tree.\n"; + break; + } +} + // Simple non-recursive scheme for DFS void dfs_stack(node const& n) { // this stack holds pointers into n's `children` vector, @@ -76,7 +104,17 @@ node create_tree(size_t num_row, size_t num_child) { int main() { // Creating Tree in main auto root = create_node(3, 3); + auto binary_root = create_node(3, 2); + std::cout << "DFS recursive:\n"; dfs_recursive(root); + std::cout << "DFS post order recursive:\n"; + dfs_recursive_postorder(root); + std::cout << "DFS inorder binary tree:\n"; + dfs_recursive_inorder_btree(binary_root); + std::cout << "DFS stack:\n"; dfs_stack(root); + std::cout << "BFS queue:\n"; bfs_queue(root); + + return 0; } From 8b71d7b8f0698289f27d222f641b73247923cc0d Mon Sep 17 00:00:00 2001 From: Gathros <6323830+Gathros@users.noreply.github.com> Date: Mon, 6 Aug 2018 18:02:43 +0100 Subject: [PATCH 2/3] updating tree_traversal.md --- contents/tree_traversal/tree_traversal.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/contents/tree_traversal/tree_traversal.md b/contents/tree_traversal/tree_traversal.md index b4b65d5f1..3153d9551 100644 --- a/contents/tree_traversal/tree_traversal.md +++ b/contents/tree_traversal/tree_traversal.md @@ -75,8 +75,7 @@ Now, in this case the first element searched through is still the root of the tr {% sample lang="jl" %} [import:18-26, lang:"julia"](code/julia/Tree.jl) {% sample lang="cpp" %} -This has not been implemented in your chosen language, so here is the Julia code -[import:18-26, lang:"julia"](code/julia/Tree.jl) +[import:29,34 lang:"c_cpp"](code/c++/tree_example.cpp) {% sample lang="cs" %} [import:47-58, lang:"csharp"](code/csharp/Tree.cs) {% sample lang="c" %} @@ -109,8 +108,7 @@ In this case, the first node visited is at the bottom of the tree and moves up t {% sample lang="jl" %} [import:28-43, lang:"julia"](code/julia/Tree.jl) {% sample lang="cpp" %} -This has not been implemented in your chosen language, so here is the Julia code -[import:28-43, lang:"julia"](code/julia/Tree.jl) +[import:37,55 lang:"c_cpp"](code/c++/tree_example.cpp) {% sample lang="cs" %} [import:60-79, lang:"csharp"](code/csharp/Tree.cs) {% sample lang="c" %} @@ -153,7 +151,7 @@ In code, it looks like this: {% sample lang="jl" %} [import:45-56, lang:"julia"](code/julia/Tree.jl) {% sample lang="cpp" %} -[import:29-45, lang:"c_cpp"](code/c++/tree_example.cpp) +[import:58,73, lang:"c_cpp"](code/c++/tree_example.cpp) {% sample lang="cs" %} [import:81-94, lang:"csharp"](code/csharp/Tree.cs) {% sample lang="c" %} @@ -189,7 +187,7 @@ And this is exactly what Breadth-First Search (BFS) does! On top of that, it can {% sample lang="jl" %} [import:58-69, lang:"julia"](code/julia/Tree.jl) {% sample lang="cpp" %} -[import:47-61, lang:"c_cpp"](code/c++/tree_example.cpp) +[import:76,89, lang:"c_cpp"](code/c++/tree_example.cpp) {% sample lang="cs" %} [import:96-109, lang:"csharp"](code/csharp/Tree.cs) {% sample lang="c" %} From c8fc178ec458f15b89eef40c3fac3a5c9a4c3d7d Mon Sep 17 00:00:00 2001 From: Gathros <6323830+Gathros@users.noreply.github.com> Date: Tue, 7 Aug 2018 10:49:20 +0100 Subject: [PATCH 3/3] fixing c++ code imports in tree traversal --- contents/tree_traversal/tree_traversal.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contents/tree_traversal/tree_traversal.md b/contents/tree_traversal/tree_traversal.md index 3153d9551..49ecb3368 100644 --- a/contents/tree_traversal/tree_traversal.md +++ b/contents/tree_traversal/tree_traversal.md @@ -75,7 +75,7 @@ Now, in this case the first element searched through is still the root of the tr {% sample lang="jl" %} [import:18-26, lang:"julia"](code/julia/Tree.jl) {% sample lang="cpp" %} -[import:29,34 lang:"c_cpp"](code/c++/tree_example.cpp) +[import:29-34 lang:"c_cpp"](code/c++/tree_example.cpp) {% sample lang="cs" %} [import:47-58, lang:"csharp"](code/csharp/Tree.cs) {% sample lang="c" %} @@ -108,7 +108,7 @@ In this case, the first node visited is at the bottom of the tree and moves up t {% sample lang="jl" %} [import:28-43, lang:"julia"](code/julia/Tree.jl) {% sample lang="cpp" %} -[import:37,55 lang:"c_cpp"](code/c++/tree_example.cpp) +[import:37-55 lang:"c_cpp"](code/c++/tree_example.cpp) {% sample lang="cs" %} [import:60-79, lang:"csharp"](code/csharp/Tree.cs) {% sample lang="c" %} @@ -151,7 +151,7 @@ In code, it looks like this: {% sample lang="jl" %} [import:45-56, lang:"julia"](code/julia/Tree.jl) {% sample lang="cpp" %} -[import:58,73, lang:"c_cpp"](code/c++/tree_example.cpp) +[import:58-73, lang:"c_cpp"](code/c++/tree_example.cpp) {% sample lang="cs" %} [import:81-94, lang:"csharp"](code/csharp/Tree.cs) {% sample lang="c" %} @@ -187,7 +187,7 @@ And this is exactly what Breadth-First Search (BFS) does! On top of that, it can {% sample lang="jl" %} [import:58-69, lang:"julia"](code/julia/Tree.jl) {% sample lang="cpp" %} -[import:76,89, lang:"c_cpp"](code/c++/tree_example.cpp) +[import:76-89, lang:"c_cpp"](code/c++/tree_example.cpp) {% sample lang="cs" %} [import:96-109, lang:"csharp"](code/csharp/Tree.cs) {% sample lang="c" %}