Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,9 @@
"Protocol: visiting"
EmptyNode>>accept: aVisitor
EmptyNode>>accept: aVisitor with: anObject
^anObject
"Protocol: enumerating"
EmptyNode>>traverse: aVisitorClass do: aBlock
^self accept: (aVisitorClass block: aBlock)

View file

@ -0,0 +1,35 @@
"Protocol: visiting"
Node>>accept: aVisitor
^aVisitor visit: self
Node>>accept: aVisitor with: anObject
^aVisitor visit: self with: anObject
"Protocol: accessing"
Node>>data
^data
Node>>data: anObject
data := anObject
Node>>left
^left
Node>>left: aNode
left := aNode
Node>>right
^right
Node>>right: aNode
right := aNode
"Protocol: initialize-release"
Node>>initialize
super initialize.
left := right := EmptyNode new
"Class side"
"Protocol: instance creation"
Node class>>data: anObject
^self new data: anObject

View file

@ -0,0 +1,17 @@
"Protocol: visiting"
visit: aNode
self subclassResponsibility
"Protocol: accessing"
Visitor>>block: anObject
block := anObject
"Protocol: initialize-release"
Visitor>>initialize
super initialize.
block := [:node | ]
"Class side"
"Protocol: instance creation"
Visitor class>>block: aBlock
^self new block: aBlock

View file

@ -0,0 +1,5 @@
"Protocol: visiting"
InOrder>>visit: aNode
aNode left accept: self.
block value: aNode.
aNode right accept: self

View file

@ -0,0 +1,12 @@
"Protocol: visiting"
LevelOrder>>visit: aNode
| queue |
queue := OrderedCollection with: aNode.
[(queue removeFirst accept: self with: queue) isEmpty] whileFalse
LevelOrder>>visit: aNode with: aQueue
block value: aNode.
^aQueue
add: aNode left;
add: aNode right;
yourself

View file

@ -0,0 +1,5 @@
"Protocol: visiting"
PostOrder>>visit: aNode
aNode left accept: self.
aNode right accept: self.
block value: aNode

View file

@ -0,0 +1,5 @@
"Protocol: visiting"
PreOrder>>visit: aNode
block value: aNode.
aNode left accept: self.
aNode right accept: self

View file

@ -0,0 +1,18 @@
| tree |
tree := (Node data: 1)
left: ((Node data: 2)
left: ((Node data: 4)
left: (Node data: 7));
right: (Node data: 5));
right: ((Node data: 3)
left: ((Node data: 6)
left: (Node data: 8);
right: (Node data: 9))).
tree traverse: PreOrder do: [:node | Transcript print: node data; space].
Transcript cr.
tree traverse: InOrder do: [:node | Transcript print: node data; space].
Transcript cr.
tree traverse: PostOrder do: [:node | Transcript print: node data; space].
Transcript cr.
tree traverse: LevelOrder do: [:node | Transcript print: node data; space].
Transcript cr.