题意 : 给你一颗无根树 , 问有多少点对 , 之间路径和为小于等于K的
思路 : qzc 大神论文中的第一题 , 详细的可以看 qzc 的《分治算法在树的路径问题中的应用》
这题是树的点分治,首先我们随便找一点作为根,将无根树转化为有根树
那么树的路径分为两种 , 一种是经过树根的 , 另外一种是不经过树根
如果我们有办法求出路径经过树根的有多少对点 ,那么不经过树根的,只要递归子树就行了 , 这样问题就得到解决了
那么分治 , 我们先看如何分 ,在最坏的情况下,比如一条链的情况,我们可能要递归 N 次 , 这样的复杂度肯定不是我们想要的 。
那么如果避免这样的情况 , 就是在选择根