数据结构刚刚开始学,全是没接触过的新内容,有点虚啊
堆之前先整理二叉树的几个概念:
数:从图论的观点来看,数等价于连通无环图
深度:沿每个节点v到根r的唯一通路所经过边的数目,称作v的深度,记作depth(v)
高度:数T中所有节点深度的最大值称作该树的高度(height),记作height(T)
度数:v的孩子总数
二叉树:每个节点的度数均不超过2
真二叉树:不含一度节点的二叉树
先序遍历:优先访问根节点x,然后依次深入左子树和右子树,递归地进行遍历
后序遍历:一次递归遍历左子树和右子树之后,才访问节点x
中序遍历:依次递归遍历左子树、访问节点x、递归遍历右子树
广度优先遍历(层次遍历):先上后下,先左后右——先访问树根,再依次是左孩子,右孩子、左孩子的左孩子、左孩子的右孩子、右孩子的左孩子、右孩子的右孩子...
完全二叉树:叶节点只能出现在最底部的两层
满二叉树:所有节点都处于最底层
二叉树的内容太多了,按照常规的逻辑顺序,应该是先学习树的内容,再进行堆,但是太多了,消化不完,这里还是决定先整理堆的内容。
堆的学习点主要就是大根堆和小根堆、建堆、堆排序、元素插入、元素删除
大根堆(大顶堆/最大堆),根节点最大,每个节点都