顺序存储的二叉树通常情况只考虑完全二叉树,因为对于一个非完全二叉树来说,顺序存储是没有意义的。
对于一个顺序存储的二叉树有什么性质:
- 1,第n个元素的左子结点是:2*n+1;
- 2,第n个元素的右子节点是:2*n+2;
- 3,第n个元素的父节点是:(n-1)/2;
对于任何一个数组而言,我们都可以将其转化为一颗完全二叉树。
堆是一种非线性结构,可以把堆看作一个数组,也可以被看作一个完全二叉树,通俗来讲堆其实就是利用完全二叉树的结构来维护的一维数组,但堆也并不一定是完全二叉树。
按照堆的特点可以把堆分为大顶堆和小顶堆。
- 大顶堆:每个结点的值都大于或等于其左右孩子结点的值
- 小顶堆:每个结点的值都小于或等于其左右孩子结点的值
因此对于堆这种数据结构:
- 对于升序排列使用大顶堆;
- 对于降序排列使用小顶堆;