Sorting algorithms/Tree sort on a linked list: Difference between revisions

Line 124:
Usage: <lang Scheme> #;2> (tree-sort '(5 3 7 9 1))
(1 3 5 7 9)</lang>
 
=={{header|zkl}}==
This code reads a file [of source code] line by line, and builds a binary tree of the first word of each line. Then prints the sorted list.
<lang zkl>class Node{
var left,right,value;
fcn init(value){ self.value=value; }
}
class Tree{
var root;
fcn add(value){
if(not root){ root=Node(value); return(self); }
fcn(node,value){
if(not node) return(Node(value));
if(value!=node.value){ // don't add duplicate values
if(value<node.value) node.left =self.fcn(node.left, value);
else node.right=self.fcn(node.right,value);
}
node
}(root,value);
return(self);
}
fcn walker{ Utils.Generator(walk,root); }
fcn walk(node){ // in order traversal
if(node){
self.fcn(node.left);
vm.yield(node.value);
self.fcn(node.right);
}
}
}</lang>
<lang zkl>tree:=Tree();
File("bbb.zkl").pump(tree.add,fcn(line){ // 5,000 lines to 660 words
line.split(" ")[0].strip(); // take first word
});</lang>
{{out}}
<pre>
...
Atomic.sleep(0.5);
Atomic.sleep(100000);
Atomic.sleep(2);
Atomic.waitFor(fcn{
Boyz:=Boys.pump(D(),fcn([(b,gs)]){
Compiler.Compiler.compileText(code)();
...
</pre>
Anonymous user