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

Added Wren
m (added Category:Sorting)
(Added Wren)
Line 788:
Usage: <lang Scheme> #;2> (tree-sort '(5 3 7 9 1))
(1 3 5 7 9)</lang>
 
=={{header|Wren}}==
{{trans|Kotlin}}
{{libheader|Wren-llist}}
{{libheader|wren-sort}}
<lang ecmascript>import "/llist" for DLinkedList
import "/sort" for Cmp
 
class BinaryTree {
construct new() {
_node = null
_leftSubTree = null
_rightSubTree = null
}
 
insert(item) {
if (!_node) {
_node = item
_leftSubTree = BinaryTree.new()
_rightSubTree = BinaryTree.new()
} else {
var cmp = Cmp.default(item)
if (cmp.call(item, _node) < 0) {
_leftSubTree.insert(item)
} else {
_rightSubTree.insert(item)
}
}
}
 
inOrder() {
if (!_node) return
_leftSubTree.inOrder()
System.write("%(_node) ")
_rightSubTree.inOrder()
}
}
 
var treeSort = Fn.new { |ll|
var searchTree = BinaryTree.new()
for (item in ll) searchTree.insert(item)
System.write("%(ll.join(" ")) -> ")
searchTree.inOrder()
System.print()
}
 
var ll = DLinkedList.new([5, 3, 7, 9, 1])
treeSort.call(ll)
var ll2 = DLinkedList.new(["d", "c", "e", "b", "a"])
treeSort.call(ll2)</lang>
 
{{out}}
<pre>
5 3 7 9 1 -> 1 3 5 7 9
d c e b a -> a b c d e
</pre>
 
=={{header|zkl}}==
9,482

edits