学了个堆排序

 
    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;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值