83 lines
2.4 KiB
Text
83 lines
2.4 KiB
Text
Module OOP {
|
|
\\ Class is a global function (until this module end)
|
|
Class Null {
|
|
}
|
|
\\ Null is a pointer to an object returned from class Null()
|
|
Global Null->Null()
|
|
Class Node {
|
|
Public:
|
|
x, Group LeftNode, Group RightNode
|
|
Class:
|
|
\\ after class: anything exist one time,
|
|
\\ not included in final object
|
|
Module Node {
|
|
.LeftNode<=Null
|
|
.RightNode<=Null
|
|
Read .x
|
|
\\ read ? for optional values
|
|
Read ? .LeftNode, .RightNode
|
|
}
|
|
}
|
|
\\ NodeTree return a pointer to a new Node
|
|
Function NodeTree {
|
|
\\ ![] pass currrent stack to Node()
|
|
->Node(![])
|
|
}
|
|
|
|
Tree=NodeTree(1, NodeTree(2,NodeTree(4, NodeTree(7)), NodeTree(5)), NodeTree(3, NodeTree(6, NodeTree(8), NodeTree(9))))
|
|
|
|
Module preorder (T) {
|
|
Print "preorder: ";
|
|
printtree(T)
|
|
Print
|
|
sub printtree(T as pointer)
|
|
If T is Null then Exit sub
|
|
Print T=>x;" ";
|
|
printtree(T=>LeftNode)
|
|
printtree(T=>RightNode)
|
|
end sub
|
|
}
|
|
preorder Tree
|
|
Module inorder (T) {
|
|
Print "inorder: ";
|
|
printtree(T)
|
|
Print
|
|
sub printtree(T as pointer)
|
|
If T is Null then Exit sub
|
|
printtree(T=>LeftNode)
|
|
Print T=>x;" ";
|
|
printtree(T=>RightNode)
|
|
end sub
|
|
}
|
|
inorder Tree
|
|
Module postorder (T) {
|
|
Print "postorder: ";
|
|
printtree(T)
|
|
Print
|
|
sub printtree(T as pointer)
|
|
If T is Null then Exit sub
|
|
printtree(T=>LeftNode)
|
|
printtree(T=>RightNode)
|
|
Print T=>x;" ";
|
|
end sub
|
|
}
|
|
postorder Tree
|
|
Module level_order (T) {
|
|
Print "level-order: ";
|
|
Stack New {
|
|
printtree(T)
|
|
if empty then exit
|
|
Read T
|
|
Loop
|
|
}
|
|
Print
|
|
sub printtree(T as pointer)
|
|
If T is Null else
|
|
Print T=>x;" ";
|
|
Data T=>LeftNode, T=>RightNode
|
|
end if
|
|
end sub
|
|
}
|
|
level_order Tree
|
|
}
|
|
OOP
|