diff --git a/contents/tree_traversal/code/rust/tree.rs b/contents/tree_traversal/code/rust/tree.rs index 44d6dbcf6..180efdef6 100644 --- a/contents/tree_traversal/code/rust/tree.rs +++ b/contents/tree_traversal/code/rust/tree.rs @@ -14,6 +14,29 @@ fn dfs_recursive(n: &Node) { } } +fn dfs_recursive_postorder(n: &Node) { + for child in &n.children { + dfs_recursive(child); + } + + println!("{}", n.value); +} + +fn dfs_recursive_inorder_btree(n: &Node) { + if n.children.len() == 2{ + dfs_recursive_inorder_btree(&n.children[1]); + println!("{}", n.value); + dfs_recursive_inorder_btree(&n.children[0]); + } else if n.children.len() == 1 { + dfs_recursive_inorder_btree(&n.children[0]); + println!("{}", n.value); + } else if n.children.len() == 0 { + println!("{}", n.value); + } else { + println!("This is not a binary tree."); + } +} + fn dfs_stack(n: &Node) { let mut stack = vec![n]; @@ -46,11 +69,15 @@ fn create_tree(num_row: u64, num_child: u64) -> Node { } fn main() { - let root = create_tree(3,3); + let root = create_tree(3,2); println!("Recursive DFS:"); dfs_recursive(&root); println!("Stack DFS:"); dfs_stack(&root); println!("Queue BFS:"); bfs_queue(&root); + println!("Recursive PostOrder DFS: "); + dfs_recursive_postorder(&root); + println!("Recursive DFS BTree:"); + dfs_recursive_inorder_btree(&root); } diff --git a/contents/tree_traversal/tree_traversal.md b/contents/tree_traversal/tree_traversal.md index c33c5bb83..1737ea6c9 100644 --- a/contents/tree_traversal/tree_traversal.md +++ b/contents/tree_traversal/tree_traversal.md @@ -88,8 +88,7 @@ This has not been implemented in your chosen language, so here is the Julia code

{% sample lang="rs"%} -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:17-23, lang:"rust"](code/rust/tree.rs) {% sample lang="hs"%} [import:8-9, lang:"haskell"](code/haskell/TreeTraversal.hs) {% endmethod %} @@ -121,8 +120,7 @@ This has not been implemented in your chosen language, so here is the Julia code

{% sample lang="rs"%} -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:25-38, lang:"rust"](code/rust/tree.rs) {% sample lang="hs"%} [import:11-15, lang:"haskell"](code/haskell/TreeTraversal.hs) {% endmethod %} @@ -163,7 +161,7 @@ In code, it looks like this:

{% sample lang="rs"%} -[import:17-24, lang:"rust"](code/rust/tree.rs) +[import:40-47, lang:"rust"](code/rust/tree.rs) {% sample lang="hs"%} This has not been implemented in your chosen language, so here is the Julia code [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

{% sample lang="rs"%} -[import:26-34, lang:"rust"](code/rust/tree.rs) +[import:49-57, lang:"rust"](code/rust/tree.rs) {% sample lang="hs"%} [import:17-20, lang:"haskell"](code/haskell/TreeTraversal.hs) {% endmethod %}