08堆

59 阅读1分钟

08堆

介绍:堆是一种特殊的树形结构,父节点的值大于等于子节点的值或者小于子节点的值。对于max heap根节点是所有节点的最大值 或者min heap根节点值是所有节点最小的值。
相关操作:
1. 堆的创建
//创建一个大顶堆:
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
//创建一个小顶堆:
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
2.常用方法
//PriorityQueue<Integer> minHeap = new PriorityQueue<>();

//2.1向堆中插入元素:堆名.add(value)
minHeap.add(5);
minHeap.add(1);
minHeap.add(4);
输出结果:minHep = [1,5,4];

//2.2获得堆顶元素:堆名.peek()
int top = minHeap.peek();
输出结果:top = 1;

//2.3删除堆顶元素:堆名.poll()
minHeap.poll();
输出结果:minHeap = [4,5];

//2.4获取堆的大小:堆名.size()
int n = minHeap.size();
输出结果:n = 2;

//2.5清空堆内所有元素:堆名.clear()
minHeap.clear();
输出结果:minHeap = [];

//2.6判断堆是否为空:堆名.isEmpty()
boolean flag = minHeap.isEmpty();
输出结果:flag = false;

//2.7判断堆内是否包含某元素:堆名.contains(value)
boolean flag = minHeap.contains(5);
输出结果:flag = true;

//2.8删除堆中指定元素:堆名.remove(value)
minHeap.remove(5);
输出结果:minHeap = [4];