栈和优先队列(一)

普通队列:先进先出;后进后出

优先队列:出队顺序和入队顺序无关;和优先级相关

 

堆的基本表示

完全二叉树:把元素顺序排列成数的形状,不缺父节点、左节点、右节点、不缺这些就是完全元素

二叉树的性质就是:父节点大于左节点和右节点,左节点大于右节点

 

用数组存储二叉树(查父节点和左接点、右节点)

查父节点:(i)=*(i-1)/2     有虚拟节点:(i)=i/2

查左节点: (i)=2*i

查右节点:   (i)=2*i+1

代码示范:查找父节点,左节点等


public class MaxHeap<E extends Comparable<E>> {//Comparable 比较方法

	private Array<E> data;
	
	public MaxHeap(int capacity){
		data=new Array<E>(capacity);
	}
	
	public MaxHeap(){
		data =new Array<E>();
	}
	
	//返回堆中的元素个数
	public int size(){
		return data.getSize();
	}
	
	//返回一个布尔值,表示堆中是否为空
	public boolean isEmpty(){
		return data.isEmpty();
	}
	
	//返回完全二叉树的数组表示中,一个索引所代表的元素的父亲节点的索引
	private int parent(int index){
		if(index == 0)
			throw new IllegalArgumentException("第一个索引没有父节点");
		
		return (index -1)/2;
	}
	
	//返回完全二叉树的数组表示中,一个索引所表示的元素的左孩子节点的索引
	private int leftChild(int index){
		return index*2+1;
	}
	
	//返回完全二叉树的数组表示中,一个索引所表示的元素的右孩子节点的索引
	private int rightChild(int index){
		return index*2+2;
	}
	
	
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值