@@ -3,18 +3,18 @@ def create_tree(rows, children)
3
3
4
4
{
5
5
id : rows ,
6
- children : Array . new ( 3 , create_tree ( rows - 1 , children ) )
6
+ children : Array . new ( children , create_tree ( rows - 1 , children ) )
7
7
}
8
8
end
9
9
10
10
def dfs_preorder ( tree )
11
- puts tree [ :id ]
11
+ print " #{ tree [ :id ] } "
12
12
tree [ :children ] . each { |child | dfs_preorder ( child ) }
13
13
end
14
14
15
15
def dfs_postorder ( tree )
16
16
tree [ :children ] . each { |child | dfs_postorder ( child ) }
17
- puts tree [ :id ]
17
+ print " #{ tree [ :id ] } "
18
18
end
19
19
20
20
def dfs_inorder ( tree )
@@ -24,16 +24,16 @@ def dfs_inorder(tree)
24
24
raise 'Postorder traversal is only valid for binary trees'
25
25
end
26
26
27
- dfs_inorder ( tree . children [ 0 ] )
28
- puts tree [ :id ]
29
- dfs_inorder ( tree . children [ 1 ] )
27
+ dfs_inorder ( tree [ : children] [ 0 ] )
28
+ print " #{ tree [ :id ] } "
29
+ dfs_inorder ( tree [ : children] [ 1 ] )
30
30
end
31
31
32
32
def dfs_iterative ( tree )
33
33
stack = [ tree ]
34
34
while stack . count . positive?
35
35
current = stack . pop
36
- puts current [ :id ]
36
+ print " #{ current [ :id ] } "
37
37
stack . push ( *current [ :children ] )
38
38
end
39
39
end
@@ -42,13 +42,24 @@ def bfs(tree)
42
42
queue = [ tree ]
43
43
while queue . count . positive?
44
44
current = queue . shift
45
- puts current [ :id ]
45
+ print " #{ current [ :id ] } "
46
46
queue . push ( *current [ :children ] )
47
47
end
48
48
end
49
49
50
- root = create_tree ( 3 , 3 )
50
+ root = create_tree ( 2 , 3 )
51
+ puts "[#]\n Recursive DFS:"
51
52
dfs_preorder ( root )
53
+ puts ""
54
+ puts "[#]\n Recursive Postorder DFS:"
52
55
dfs_postorder ( root )
56
+ puts ""
57
+ puts "[#]\n Stack-based DFS:"
53
58
dfs_iterative ( root )
59
+ puts ""
60
+ puts "[#]\n Queue-based DFS:"
54
61
bfs ( root )
62
+ puts ""
63
+ root_binary = create_tree ( 3 , 2 ) ;
64
+ puts "[#]\n Recursive Inorder DFS for Binary Tree:"
65
+ dfs_inorder ( root_binary )
0 commit comments