Skip to content

Commit 3395e0a

Browse files
authored
Shortening code
1 parent c0a07b2 commit 3395e0a

File tree

1 file changed

+20
-35
lines changed

1 file changed

+20
-35
lines changed

contents/tree_traversal/code/smalltalk/tree_traversal.st

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

22-
Node>>dfsRecursive: value
22+
Node>>dfsRecursive
2323
"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 ]
3126

32-
Node>>dfsRecursivePostOrder: value
27+
Node>>dfsRecursivePostOrder
3328
"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.
3831

39-
Node>>dfsInOrderBinaryTree: value
32+
Node>>dfsInOrderBinaryTree
4033
"Recursive depth first search on a binary tree in order."
4134
children size > 2 ifTrue: [
4235
Transcript show: 'This is not a binary tree!'; cr.
4336
^self.
4437
].
4538
children size = 2 ifTrue: [
4639
(children at: 1) dfsInOrderBinaryTree: value.
47-
]
48-
data = value ifTrue: [
49-
Transcript show: data; cr.
50-
]
40+
].
41+
Transcript show: data; cr.
5142
children size >= 1 ifTrue: [
5243
(children at: 0) dfsInOrderBinaryTree: value.
53-
]
44+
].
5445
^self.
5546

56-
Node>>dfsStack: value
47+
Node>>dfsStack
5748
"Depth-first search with a stack."
5849
| stack top |
5950
stack := Stack new.
6051
stack push: self.
61-
[stack size > 0] whileTrue: [
52+
[stack size > 0] whileTrue: [
6253
top := stack pop.
63-
top data = value ifTrue: [
64-
^true.
65-
].
54+
Transcript show: (top data); cr.
6655
top children reverseDo: [ :child |
6756
stack push: child.
6857
].
6958
].
70-
^false
7159

72-
Node>>bfs: value
60+
Node>>bfs
7361
"A breadth-first tree search using queues."
7462
| queue current |
7563
queue := LinkedList with: self.
7664
[ queue size > 0 ] whileTrue: [
7765
current := queue first.
7866
queue removeFirst.
79-
current data = value ifTrue: [
80-
^true.
81-
]
67+
Transcript show: (current data); cr.
8268
current children collect: [ :child |
8369
queue addLast: child
8470
].
8571
].
86-
^false
8772

8873
| test |
8974
test := Node new: 1 children: { Node new: 2.
9075
Node new: 3 children: { Node new: 4.
9176
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

Comments
 (0)