1.二叉堆概念
我们知道,树有很多种,最常用的就是二叉树了。二叉树又有满二叉树和完全二叉树(完全二叉树,叶节点最多只出现在最底层和次底
层,而且最底层的叶节点都连续集中在最左边,每个内部节点都有两个子节点, 最多可有1 个节点例外;完全二叉树可以用非嵌套列表表示,如果节点的下标为p ,那么其左子节点下标为2p ,右子节点为2p+1 ,其父节点下标为p//2)。
而二叉堆,就是基于完全二叉树的一种数据结构。它有以下两个特性。
- 首先它是一个完全二叉树
- 其次,堆中的任意一个父节点的值都大于等于(或小于)它的左右孩子节点。
根据第二个特性,就把二叉堆分为大顶堆(或叫最大堆),和小顶堆(或叫最小堆)。顾名思义,大顶堆,就是父节点大于等于左右孩子节点的堆,小顶堆就是父节点小于左右孩子节点的堆。
2.二叉搜索树(BST,Binary Search Tree)
比父节点小的key都出现在左子树,比父节点大的key都出现在右子树.
实现二叉查找树保存key,实现key的快速搜索