Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
97
Task/Tree-traversal/Ceylon/tree-traversal.ceylon
Normal file
97
Task/Tree-traversal/Ceylon/tree-traversal.ceylon
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
import ceylon.collection {
|
||||
ArrayList
|
||||
}
|
||||
|
||||
shared void run() {
|
||||
|
||||
class Node(label, left = null, right = null) {
|
||||
shared Integer label;
|
||||
shared Node? left;
|
||||
shared Node? right;
|
||||
string => label.string;
|
||||
}
|
||||
|
||||
void preorder(Node node) {
|
||||
process.write(node.string + " ");
|
||||
if(exists left = node.left) {
|
||||
preorder(left);
|
||||
}
|
||||
if(exists right = node.right) {
|
||||
preorder(right);
|
||||
}
|
||||
}
|
||||
|
||||
void inorder(Node node) {
|
||||
if(exists left = node.left) {
|
||||
inorder(left);
|
||||
}
|
||||
process.write(node.string + " ");
|
||||
if(exists right = node.right) {
|
||||
inorder(right);
|
||||
}
|
||||
}
|
||||
|
||||
void postorder(Node node) {
|
||||
if(exists left = node.left) {
|
||||
postorder(left);
|
||||
}
|
||||
if(exists right = node.right) {
|
||||
postorder(right);
|
||||
}
|
||||
process.write(node.string + " ");
|
||||
}
|
||||
|
||||
void levelOrder(Node node) {
|
||||
value nodes = ArrayList<Node> {node};
|
||||
while(exists current = nodes.accept()) {
|
||||
process.write(current.string + " ");
|
||||
if(exists left = current.left) {
|
||||
nodes.offer(left);
|
||||
}
|
||||
if(exists right = current.right) {
|
||||
nodes.offer(right);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
value tree = Node {
|
||||
label = 1;
|
||||
left = Node {
|
||||
label = 2;
|
||||
left = Node {
|
||||
label = 4;
|
||||
left = Node {
|
||||
label = 7;
|
||||
};
|
||||
};
|
||||
right = Node {
|
||||
label = 5;
|
||||
};
|
||||
};
|
||||
right = Node {
|
||||
label = 3;
|
||||
left = Node {
|
||||
label = 6;
|
||||
left = Node {
|
||||
label = 8;
|
||||
};
|
||||
right = Node {
|
||||
label = 9;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
process.write("preorder: ");
|
||||
preorder(tree);
|
||||
print("");
|
||||
process.write("inorder: ");
|
||||
inorder(tree);
|
||||
print("");
|
||||
process.write("postorder: ");
|
||||
postorder(tree);
|
||||
print("");
|
||||
process.write("levelorder: ");
|
||||
levelOrder(tree);
|
||||
print("");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue