File tree 1 file changed +20
-1
lines changed
contents/tree_traversal/code/rust
1 file changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -22,6 +22,21 @@ fn dfs_recursive_postorder(n: &Node) {
22
22
println ! ( "{}" , n. value) ;
23
23
}
24
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
+
25
40
fn dfs_stack ( n : & Node ) {
26
41
let mut stack = vec ! [ n] ;
27
42
@@ -54,11 +69,15 @@ fn create_tree(num_row: u64, num_child: u64) -> Node {
54
69
}
55
70
56
71
fn main ( ) {
57
- let root = create_tree ( 3 , 3 ) ;
72
+ let root = create_tree ( 3 , 2 ) ;
58
73
println ! ( "Recursive DFS:" ) ;
59
74
dfs_recursive ( & root) ;
60
75
println ! ( "Stack DFS:" ) ;
61
76
dfs_stack ( & root) ;
62
77
println ! ( "Queue BFS:" ) ;
63
78
bfs_queue ( & root) ;
79
+ println ! ( "Recursive PostOrder DFS: " ) ;
80
+ dfs_recursive_postorder ( & root) ;
81
+ println ! ( "Recursive DFS BTree:" ) ;
82
+ dfs_recursive_inorder_btree ( & root) ;
64
83
}
You can’t perform that action at this time.
0 commit comments