ts-ds-tool
Version:
Data structure and algorithm of TypeScript
143 lines (119 loc) • 2.65 kB
Markdown
#二叉堆 Heap\<T>
二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。二叉堆有两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。

### api适用于最大堆和最小堆,此api以最大堆为例
## 基本操作的API及示例
### Constructor
##### new MaxHeap(key ?: keyof T)
``` text
实例:
const MaxHeap = new MaxHeap();
const MaxHeap = new MaxHeap<{key:number}>("key");
```
### 插入 add
##### MaxHeap add(T value)
``` text
实例:
const maxHeap = new MaxHeap();
maxHeap.add(1);
maxHeap.add(2);
maxHeap.add(3);
```
### 取堆顶 poll
##### poll(): T
``` text
实例:
const maxHeap = new MaxHeap();
maxHeap.add(1);
maxHeap.add(2);
maxHeap.add(3);
const value = maxHeap.poll();
console.log(value);
// 3
```
### 删除 remove
##### remove(item: ((item: T) => boolean)|T): boolean
``` text
实例:
const maxHeap = new MaxHeap();
maxHeap.add(1);
maxHeap.add(2);
maxHeap.add(3);
maxHeap.remove(2);
maxHeap.remove(item => item === 3);
```
### 查看堆顶 peek
##### peek(): T
``` text
实例:
const maxHeap = new MaxHeap();
maxHeap.add(1);
maxHeap.add(2);
maxHeap.add(3);
const value = maxHeap.peek();
console.log(value);
// 3
描述:
不影响堆结构
```
### 是否为空 isEmpty
##### isEmpty(): boolean
``` text
实例:
const maxHeap = new MaxHeap();
maxHeap.add(1);
maxHeap.add(2);
maxHeap.add(3);
const value = maxHeap.isEmpty();
console.log(value);
// false
```
### 查找 find
##### find(): T
``` text
实例:
const maxHeap = new MaxHeap();
maxHeap.add(1);
maxHeap.add(2);
maxHeap.add(3);
maxHeap.find(2);
const value = maxHeap.find(item => item === 2);
console.log(value);
// 2
```
### 查找所有 findAll
##### findAll(): T[]
``` text
实例:
const maxHeap = new MaxHeap();
maxHeap.add(1);
maxHeap.add(2);
maxHeap.add(3);
const value = maxHeap.findAll(item => item > 1);
console.log(value);
// [1, 2]
```
### 清空 clear
##### clear(): void
``` text
实例:
const maxHeap = new MaxHeap();
maxHeap.add(1);
maxHeap.add(2);
maxHeap.add(3);
maxHeap.clear();
console.log(maxHeap.Size);
// 0
```
### 清空 entries
##### entries(): T[]
``` text
实例:
const maxHeap = new MaxHeap();
maxHeap.add(1);
maxHeap.add(2);
maxHeap.add(3);
const values = maxHeap.entries();
console.log(values);
// [1, 2, 3]
```