@@ -23,17 +23,18 @@ fn dfs_recursive_postorder(n: &Node) {
23
23
}
24
24
25
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." ) ;
26
+ match & n. children [ ..] {
27
+ [ left, right] => {
28
+ dfs_recursive_inorder_btree ( left) ;
29
+ println ! ( "{}" , n. value) ;
30
+ dfs_recursive_inorder_btree ( right) ;
31
+ }
32
+ [ left] => {
33
+ dfs_recursive_inorder_btree ( left) ;
34
+ println ! ( "{}" , n. value) ;
35
+ }
36
+ [ ] => println ! ( "{}" , n. value) ,
37
+ _ => println ! ( "This is not a binary tree." ) ,
37
38
}
38
39
}
39
40
@@ -76,14 +77,19 @@ fn create_tree(num_row: u64, num_child: u64) -> Node {
76
77
77
78
fn main ( ) {
78
79
let root = create_tree ( 2 , 3 ) ;
80
+
79
81
println ! ( "Recursive DFS:" ) ;
80
82
dfs_recursive ( & root) ;
83
+
81
84
println ! ( "Stack DFS:" ) ;
82
85
dfs_stack ( & root) ;
86
+
83
87
println ! ( "Queue BFS:" ) ;
84
88
bfs_queue ( & root) ;
89
+
85
90
println ! ( "Recursive post-order DFS:" ) ;
86
91
dfs_recursive_postorder ( & root) ;
92
+
87
93
println ! ( "Recursive in-order DFS BTree:" ) ;
88
94
let root_binary = create_tree ( 3 , 2 ) ;
89
95
dfs_recursive_inorder_btree ( & root_binary) ;
0 commit comments