学了个堆排序

来源:互联网 发布:java corn 表达式 编辑:程序博客网 时间:2024/05/20 13:08
 
    public static class TreeNode{int val;TreeNode left;TreeNode right;public TreeNode(){this.left = this.right = null;}public TreeNode(int val){this.val = val;}}public static TreeNode creatHeap(int []nums){if(nums == null || nums.length == 0){return null;}TreeNode root = new TreeNode(nums[0]);LinkedList<TreeNode> queue = new LinkedList<TreeNode>();queue.addFirst(root);for(int i = 1; i < nums.length; i++){TreeNode bt = queue.pollLast();bt.left = new TreeNode(nums[i]);queue.addFirst(bt.left);i++;if(i < nums.length){bt.right = new TreeNode(nums[i]);queue.addFirst(bt.right);}root = justHeap(root);}return root;}public static TreeNode justHeap(TreeNode root){if(root == null || (root.left == null && root.right == null)){return root;}justHeap(root.left);justHeap(root.right);if(root.left != null){if(root.val < root.left.val){int tmp = root.val;root.val = root.left.val;root.left.val = tmp;}}if(root.right != null){if(root.val < root.right.val){int tmp = root.val;root.val = root.right.val;root.right.val = tmp;}}return root;}