@@ -19,78 +19,63 @@ Node>>data: newData
19
19
" Data setter"
20
20
data := newData.
21
21
22
- Node >> dfsRecursive: value
22
+ Node >> dfsRecursive
23
23
" Recursive depth first search."
24
- data = value ifTrue: [
25
- ^ true .
26
- ].
27
- children collect: [ :child |
28
- (child dfsRecursive: value) ifTrue: [ ^ true . ]
29
- ]
30
- ^ false .
24
+ Transcript show: data; cr.
25
+ children collect: [ :child | child dfsRecursive ]
31
26
32
- Node >> dfsRecursivePostOrder: value
27
+ Node >> dfsRecursivePostOrder
33
28
" Recursive depth first search (post-order)."
34
- children collect: [ :child |
35
- (child dfsRecursive: value) ifTrue: [ ^ true . ]
36
- ].
37
- ^ (data = value).
29
+ children collect: [ :child | (child dfsRecursivePostOrder)].
30
+ Transcript show: data; cr.
38
31
39
- Node >> dfsInOrderBinaryTree: value
32
+ Node >> dfsInOrderBinaryTree
40
33
" Recursive depth first search on a binary tree in order."
41
34
children size > 2 ifTrue: [
42
35
Transcript show: ' This is not a binary tree!' ; cr.
43
36
^ self .
44
37
].
45
38
children size = 2 ifTrue: [
46
39
(children at: 1 ) dfsInOrderBinaryTree: value.
47
- ]
48
- data = value ifTrue: [
49
- Transcript show: data; cr.
50
- ]
40
+ ].
41
+ Transcript show: data; cr.
51
42
children size >= 1 ifTrue: [
52
43
(children at: 0 ) dfsInOrderBinaryTree: value.
53
- ]
44
+ ].
54
45
^ self .
55
46
56
- Node >> dfsStack: value
47
+ Node >> dfsStack
57
48
" Depth-first search with a stack."
58
49
| stack top |
59
50
stack := Stack new .
60
51
stack push: self .
61
- [stack size > 0 ] whileTrue: [
52
+ [stack size > 0 ] whileTrue: [
62
53
top := stack pop.
63
- top data = value ifTrue: [
64
- ^ true .
65
- ].
54
+ Transcript show: (top data); cr.
66
55
top children reverseDo: [ :child |
67
56
stack push: child.
68
57
].
69
58
].
70
- ^ false
71
59
72
- Node >> bfs: value
60
+ Node >> bfs
73
61
" A breadth-first tree search using queues."
74
62
| queue current |
75
63
queue := LinkedList with: self .
76
64
[ queue size > 0 ] whileTrue: [
77
65
current := queue first.
78
66
queue removeFirst.
79
- current data = value ifTrue: [
80
- ^ true .
81
- ]
67
+ Transcript show: (current data); cr.
82
68
current children collect: [ :child |
83
69
queue addLast: child
84
70
].
85
71
].
86
- ^ false
87
72
88
73
| test |
89
74
test := Node new : 1 children: { Node new : 2 .
90
75
Node new : 3 children: { Node new : 4 .
91
76
Node new : 5 . } }.
92
- Transcript show: ( test dfsRecursive: 6 ); cr .
93
- Transcript show: ( test dfsRecursivePostorder: 4 ); cr .
94
- test dfsInOrderBinaryTree: 7 .
95
- Transcript show: ( test dfsStack: 2 ); cr .
96
- Transcript show: ( test bfs: 4 ); cr.
77
+ test dfsRecursive.
78
+ test dfsRecursivePostorder.
79
+ test dfsInOrderBinaryTree.
80
+ test dfsStack: 2 .
81
+ test bfs: 4 ); cr.
0 commit comments