Skip to content

Commit f19f7f2

Browse files
authored
Merge pull request #326 from CDsigma/addingRustFnsTree
Adding the Missing Rust Tree Traversal Functions
2 parents 3d29292 + e93e9a2 commit f19f7f2

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

contents/tree_traversal/code/rust/tree.rs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,29 @@ fn dfs_recursive(n: &Node) {
1414
}
1515
}
1616

17+
fn dfs_recursive_postorder(n: &Node) {
18+
for child in &n.children {
19+
dfs_recursive(child);
20+
}
21+
22+
println!("{}", n.value);
23+
}
24+
25+
fn dfs_recursive_inorder_btree(n: &Node) {
26+
if n.children.len() == 2{
27+
dfs_recursive_inorder_btree(&n.children[1]);
28+
println!("{}", n.value);
29+
dfs_recursive_inorder_btree(&n.children[0]);
30+
} else if n.children.len() == 1 {
31+
dfs_recursive_inorder_btree(&n.children[0]);
32+
println!("{}", n.value);
33+
} else if n.children.len() == 0 {
34+
println!("{}", n.value);
35+
} else {
36+
println!("This is not a binary tree.");
37+
}
38+
}
39+
1740
fn dfs_stack(n: &Node) {
1841
let mut stack = vec![n];
1942

@@ -46,11 +69,15 @@ fn create_tree(num_row: u64, num_child: u64) -> Node {
4669
}
4770

4871
fn main() {
49-
let root = create_tree(3,3);
72+
let root = create_tree(3,2);
5073
println!("Recursive DFS:");
5174
dfs_recursive(&root);
5275
println!("Stack DFS:");
5376
dfs_stack(&root);
5477
println!("Queue BFS:");
5578
bfs_queue(&root);
79+
println!("Recursive PostOrder DFS: ");
80+
dfs_recursive_postorder(&root);
81+
println!("Recursive DFS BTree:");
82+
dfs_recursive_inorder_btree(&root);
5683
}

contents/tree_traversal/tree_traversal.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,7 @@ This has not been implemented in your chosen language, so here is the Julia code
8888
<img class="center" src="code/scratch/dfs-post.svg" width="300" />
8989
</p>
9090
{% sample lang="rs"%}
91-
This has not been implemented in your chosen language, so here is the Julia code
92-
[import:18-26, lang:"julia"](code/julia/Tree.jl)
91+
[import:17-23, lang:"rust"](code/rust/tree.rs)
9392
{% sample lang="hs"%}
9493
[import:8-9, lang:"haskell"](code/haskell/TreeTraversal.hs)
9594
{% endmethod %}
@@ -121,8 +120,7 @@ This has not been implemented in your chosen language, so here is the Julia code
121120
<img class="center" src="code/scratch/dfs-in.svg" width="300" />
122121
</p>
123122
{% sample lang="rs"%}
124-
This has not been implemented in your chosen language, so here is the Julia code
125-
[import:28-43, lang:"julia"](code/julia/Tree.jl)
123+
[import:25-38, lang:"rust"](code/rust/tree.rs)
126124
{% sample lang="hs"%}
127125
[import:11-15, lang:"haskell"](code/haskell/TreeTraversal.hs)
128126
{% endmethod %}
@@ -163,7 +161,7 @@ In code, it looks like this:
163161
<img class="center" src="code/scratch/dfs-stack.svg" width="400" />
164162
</p>
165163
{% sample lang="rs"%}
166-
[import:17-24, lang:"rust"](code/rust/tree.rs)
164+
[import:40-47, lang:"rust"](code/rust/tree.rs)
167165
{% sample lang="hs"%}
168166
This has not been implemented in your chosen language, so here is the Julia code
169167
[import:45-56, lang:"julia"](code/julia/Tree.jl)
@@ -197,7 +195,7 @@ And this is exactly what Breadth-First Search (BFS) does! On top of that, it can
197195
<img class="center" src="code/scratch/bfs.svg" width="400" />
198196
</p>
199197
{% sample lang="rs"%}
200-
[import:26-34, lang:"rust"](code/rust/tree.rs)
198+
[import:49-57, lang:"rust"](code/rust/tree.rs)
201199
{% sample lang="hs"%}
202200
[import:17-20, lang:"haskell"](code/haskell/TreeTraversal.hs)
203201
{% endmethod %}

0 commit comments

Comments
 (0)