树和二叉树
二叉树定义为所有节点的儿子个数不超过两个
优先队列和堆
优先队列定义:一,插入一个数值,二,取出最小数值(获取数值,并删除)
堆性质:儿子的值一定不小于父亲的值,此外树节点是从上到下,从左到右排列
堆实现有两两种方式:一,利用指针(难);二,利用数组(易);由父节点得知子节点:设父节点编号为i,则子节点为2i+1,2i+2;
利用优先队列:
PKU3253也可以利用优先队列解决。
二叉搜索树
功能:一,插入一个数值;二,查询是否包含某个数值;三,删除某个数值。
满足条件:左子树上所有节点都比自己小,右子树所有节点都比自己大。
二叉查找树有时候需要平衡才能体现出其性能,否则跟链表的复杂度一样了,于是有平衡二叉树。
并查集
用来管理元素分组情况的数据结构。
结构:初始化,合并,查询。
实现注意点:树高度,rank从小向大连边,路径压缩。
利用并查集解决: