1.树的定义
父节点、子节点、子树、祖先、后代、兄弟、根节点、叶节点、路径等
2.生成树
生成树的计数
Matrix-Tree定理
最小(大)生成树
-Prim算法
-Kruskal算法
部分维护动态图的题目可通过离线处理转化为维护最小生成树
3.树的重心
定义(性质)1:到树上所有点的距离和最小的点
定义(性质)2:割掉该点后最大的子树大小最小的点
-可通过递归处理树的重心来完成动态树分治
加权重心与平权重心求法类似
4.树的直径
顾名思义,树上最长的路径
简单的求法:先从一点求出最远点,再以该点求出其最远点,则这两点之间的路径为一条直径
树的中心
树的中心为直径的中点(不一定在某个节点上,也可能在某条边上,如果在某条边上,则所有直径经过该边)
5.最近公共祖先
基于倍增的lca算法,分别求出每个点的 2i 祖先, O(n) 时间可以求出 2i+1 祖先。
利用lca求出树上两点距离
分别求出每个点到根的距离,则两点距离为改距离和减去两倍lca到根的距离。
6.树的计数
由Matrix-Tree原理得: n