一、树
- 可以递归定义的数据结构
- 树是由n个节点组成的集合:
- n=0,是一颗空树
- 根节点
- 叶子节点:最低层,无子节点
- 树的度:树的所有节点分叉最多的叉数
- 孩子节点/父节点
1. 二叉树:度不超过2
- 两个子节点:左右子节点
2. 满二叉树:二叉树的每一层节点数达到最大值
3. 完全二叉树:叶子节点只能出现在最下层和次下层,并且最下层节点都集中在该层最左边
4. 二叉树的存储方式
- 链式存储方式(链表)
- 顺序存储方式(列表/数组)
- 父节点为:i ——> 左子节点:2i + 1 ——> 右子节点:2i + 2
- 左(右)子节点:i ——> 父节点:(i - 1) // 2
二、堆
- 堆:一种特殊的完全二叉树
- 大根堆:一颗完全二叉树,满足任一节点都比其孩子节点大
- 小根堆:一颗完全二叉树,满足任一节点都比其孩子节点小
- 堆的向下调整
- 假设:根节点的左右子树都是堆,但自身不是堆
- 通过一次向下调整将其变为一个堆
三、堆排序
- 过程