Skip to content

Commit 69d5118

Browse files
authored
Kinda some changes
1 parent 0970e19 commit 69d5118

File tree

1 file changed

+43
-48
lines changed

1 file changed

+43
-48
lines changed

contents/tree_traversal/code/smalltalk/tree_traversal.st

Lines changed: 43 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -19,83 +19,78 @@ Node>>data: newData
1919
"Data setter"
2020
data := newData.
2121

22-
Node>>dfsRecursive
22+
Node>>dfsRecursive: value
2323
"Recursive depth first search."
24-
data isNil ifFalse: [
25-
Transcript show: data.
26-
Transcript cr.
24+
data = value ifTrue: [
25+
^true.
2726
].
28-
children collect: [ :each | each dfsRecursive].
27+
children collect: [ :child |
28+
(child dfsRecursive: value) ifTrue: [ ^true. ]
29+
]
30+
^false.
2931

30-
Node>>dfsRecursivePostorder
32+
Node>>dfsRecursivePostOrder: value
3133
"Recursive depth first search (post-order)."
32-
children collect: [ :each | each dfsRecursivePostorder ].
33-
data isNil ifTrue: [ ^ self ].
34-
Transcript show: data.
35-
Transcript cr.
36-
37-
Node>>dfsInOrderBinaryTree
34+
children collect: [ :child |
35+
(child dfsRecursive: value) ifTrue: [ ^true. ]
36+
].
37+
^(data = value).
38+
39+
Node>>dfsInOrderBinaryTree: value
3840
"Recursive depth first search on a binary tree in order."
39-
children size = 2 ifTrue: [
40-
(children at: 1) dfsInOrderBinaryTree.
41-
Transcript show: data.
42-
Transcript cr.
43-
(children at: 2) dfsInOrderBinaryTree.
41+
children size > 2 ifTrue: [
42+
Transcript show: 'This is not a binary tree!'; cr.
4443
^self.
4544
].
46-
children size = 1 ifTrue: [
47-
(children at: 1) dfsInOrderBinaryTree.
48-
Transcript show: data.
49-
Transcript cr.
50-
^self.
51-
].
52-
children size = 0 ifTrue: [
53-
Transcript show: data.
54-
Transcript cr.
55-
^self.
56-
].
57-
Transcript show: 'This is not a binary tree!'.
58-
Transcript cr.
59-
children length
45+
children size = 2 ifTrue: [
46+
(children at: 1) dfsInOrderBinaryTree: value.
47+
]
48+
data = value ifTrue: [
49+
Transcript show: data; cr.
50+
]
51+
children size >= 1 ifTrue: [
52+
(children at: 0) dfsInOrderBinaryTree: value.
53+
]
54+
^self.
6055

61-
Node>>dfsStack
56+
Node>>dfsStack: value
6257
"Depth-first search with a stack."
6358
| stack top |
6459
stack := Stack new.
6560
stack push: self.
6661
[stack size > 0] whileTrue: [
6762
top := stack pop.
68-
Transcript show: top data.
69-
Transcript cr.
63+
top data = value ifTrue: [
64+
^true.
65+
].
7066
top children reverseDo: [ :child |
71-
stack push: child
67+
stack push: child.
7268
].
7369
].
70+
^false
7471

75-
Node>>bfs
72+
Node>>bfs: value
7673
"A breadth-first tree search using queues."
7774
| queue current |
7875
queue := LinkedList with: self.
7976
[ queue size > 0 ] whileTrue: [
8077
current := queue first.
8178
queue removeFirst.
82-
Transcript show: current.
83-
Transcript cr.
79+
current data = value ifTrue: [
80+
^true.
81+
]
8482
current children collect: [ :child |
8583
queue addLast: child
8684
].
87-
]
85+
].
86+
^false
8887

8988
| test |
9089
test := Node new: 1 children: { Node new: 2.
9190
Node new: 3 children: { Node new: 4.
9291
Node new: 5. } }.
93-
test dfsRecursive.
94-
Transcript cr.
95-
test dfsRecursivePostorder.
96-
Transcript cr.
97-
test dfsInOrderBinaryTree.
98-
Transcript cr.
99-
test dfsStack.
100-
Transcript cr.
101-
test bfs.
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.

0 commit comments

Comments
 (0)