Sorting algorithms/Tree sort on a linked list: Difference between revisions
Sorting algorithms/Tree sort on a linked list (view source)
Revision as of 17:42, 1 February 2021
, 3 years agoAdded 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}}==
|