二叉树排序算法是一种常见的排序算法,它的时间复杂度为O(nlogn)。下面是一个用Java实现的二叉树排序算法:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
public class BinaryTreeSort {
public TreeNode root;
public void insert(int val) {
root = insert(root, val);
}
public TreeNode insert(TreeNode root, int val) {
if (root == null) {
return new TreeNode(val);
}
if (val < root.val) {
root.left = insert(root.left, val);
} else {
root.right = insert(root.right, val);
}
return root;
}
public void inorderTraversal(TreeNode root) {
if (root != null) {
inorderTraversal(root.left);
System.out.print(root.val + " ");
inorderTraversal(root.right);
}
}
public static void main(String[] args) {
int[] nums = {4, 2, 7, 1, 3, 6, 9, 5};
BinaryTreeSort tree = new BinaryTreeSort();
for (int num : nums) {
tree.insert(num);
}
tree.inorderTraversal(tree.root);
}
}
这个算法中,我们定义了一个TreeNode类,表示二叉树的节点。每个节点包含一个val值,以及左右子节点的指针。我们还定义了一个BinaryTreeSort类,用于执行排序操作。它包含一个root节点,表示树的根节点。我们使用insert方法将值插入到二叉树中,inorderTraversal方法遍历二叉树并输出排序后的结果。
在main方法中,我们定义一个数组nums,并将其插入到二叉树中。然后调用inorderTraversal方法输出排序后的结果。
以上就是一个用Java实现的二叉树排序算法。