Skip to content

Commit e93e9a2

Browse files
Merge pull request #5 from Gathros/rusty-tree
Adding `dfs_recursive_inorder_btree` to rust
2 parents 093d50a + 015270c commit e93e9a2

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

contents/tree_traversal/code/rust/tree.rs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,21 @@ fn dfs_recursive_postorder(n: &Node) {
2222
println!("{}", n.value);
2323
}
2424

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+
2540
fn dfs_stack(n: &Node) {
2641
let mut stack = vec![n];
2742

@@ -54,11 +69,15 @@ fn create_tree(num_row: u64, num_child: u64) -> Node {
5469
}
5570

5671
fn main() {
57-
let root = create_tree(3,3);
72+
let root = create_tree(3,2);
5873
println!("Recursive DFS:");
5974
dfs_recursive(&root);
6075
println!("Stack DFS:");
6176
dfs_stack(&root);
6277
println!("Queue BFS:");
6378
bfs_queue(&root);
79+
println!("Recursive PostOrder DFS: ");
80+
dfs_recursive_postorder(&root);
81+
println!("Recursive DFS BTree:");
82+
dfs_recursive_inorder_btree(&root);
6483
}

contents/tree_traversal/tree_traversal.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,7 @@ This has not been implemented in your chosen language, so here is the Julia code
120120
<img class="center" src="code/scratch/dfs-in.svg" width="300" />
121121
</p>
122122
{% sample lang="rs"%}
123-
This has not been implemented in your chosen language, so here is the Julia code
124-
[import:28-43, lang:"julia"](code/julia/Tree.jl)
123+
[import:25-38, lang:"rust"](code/rust/tree.rs)
125124
{% sample lang="hs"%}
126125
[import:11-15, lang:"haskell"](code/haskell/TreeTraversal.hs)
127126
{% endmethod %}
@@ -162,7 +161,7 @@ In code, it looks like this:
162161
<img class="center" src="code/scratch/dfs-stack.svg" width="400" />
163162
</p>
164163
{% sample lang="rs"%}
165-
[import:25-32, lang:"rust"](code/rust/tree.rs)
164+
[import:40-47, lang:"rust"](code/rust/tree.rs)
166165
{% sample lang="hs"%}
167166
This has not been implemented in your chosen language, so here is the Julia code
168167
[import:45-56, lang:"julia"](code/julia/Tree.jl)
@@ -196,7 +195,7 @@ And this is exactly what Breadth-First Search (BFS) does! On top of that, it can
196195
<img class="center" src="code/scratch/bfs.svg" width="400" />
197196
</p>
198197
{% sample lang="rs"%}
199-
[import:34-42, lang:"rust"](code/rust/tree.rs)
198+
[import:49-57, lang:"rust"](code/rust/tree.rs)
200199
{% sample lang="hs"%}
201200
[import:17-20, lang:"haskell"](code/haskell/TreeTraversal.hs)
202201
{% endmethod %}

0 commit comments

Comments
 (0)