Tree sort is a sorting algorithm that builds a binary search tree from the elements to be sorted, then traverses the tree in-order to retrieve the elements in sorted order.
The algorithm has an average and worst-case time complexity of O(n log n), where n is the number of elements to be sorted.
pseudocode:
TreeSort(array):
Define a function to insert elements into a binary search tree (BST).
// Build the BST
for each element in array:
Insert(element, root)
// In-order traversal to get the sorted sequence
InOrderTraversal(root)
Insert(value, node):
if node is NULL:
Create a new node with the given value
Set it as the root if the tree is empty
else if value < node.value:
Insert value into the left subtree recursively
else:
Insert value into the right subtree recursively
InOrderTraversal(node):
if node is not NULL:
InOrderTraversal(node.left)
Print node.value
InOrderTraversal(node.right)
// Node class to create new nodesclassNode {constructor(value) {this.value = value;this.left =null;this.right =null; }}// Binary Search Tree classclassBST {constructor() {this.root =null; }// Insert a new node with a given value into the BSTinsert(value) {constnewNode=newNode(value);if (!this.root) {this.root = newNode;return; }let current =this.root;while (true) {if (value <current.value) {if (!current.left) {current.left = newNode;break; } current =current.left; } else {if (!current.right) {current.right = newNode;break; } current =current.right; } } }// Perform in-order traversal of the BSTinOrderTraversal(node, result = []) {if (node !==null) {this.inOrderTraversal(node.left, result);result.push(node.value);this.inOrderTraversal(node.right, result); }return result; }}// Tree Sort functionfunctiontreeSort(array) {constbst=newBST();// Build the BSTarray.forEach(element => {bst.insert(element); });// Perform in-order traversal to get the sorted sequencereturnbst.inOrderTraversal(bst.root);}// Example usageconstarray= [4,2,5,1,3];constsortedArray=treeSort(array);console.log(sortedArray); // Output: [1, 2, 3, 4, 5]
In this example, we define a Node class to represent nodes in the binary search tree, and a BinaryTree class to represent the binary search tree itself.
The treeSort function takes an array as input, creates a binary search tree with its elements, and then performs an in-order traversal to retrieve the elements in sorted order.