第一个问题您可以参考一下线段树
第二个问题,观察一下树的结构会发现叶子结点的出度一定为0,那么答案就显然了
第三个问题,建树的时候统计深度 参考lca .. 说实话 您这个公式我没有看懂什么公式,我这里就随便拉个公式吧
关于计算深度的两个公式,第一个公式要求:求两个结点的距离,设这两点为u, v,距离根节点的距离为d[u], d[v] 那么一定有 u->v :d[u] + d[v] - 2 * d[lca(u,v)] ,这个公式很显然
第二个公式:给你四个点 $u_1, v_1, u_2, v_2$,且$u_1, v_1$ 连接,$u_2, v_2$ 连接,让你判断这两个线是否有重叠(经历相同的点),设dist[x]为x点距离根节点的距离,那么一定有dist[1, y1] + dist[x2, y2] >= dist[x1, x2] + dist[y1, y2] 且 dist[x, y] = depth[x] + depth[y] - 2 × depth[lca(x, y)]
第四个问题,斐波那契树没学(我觉得也不会考quq)
希望能帮到您
回答于2019-09-19 02:43
自己打自己脸了…… –
Live
2019-09-21 01:00
@Live:
现在突然发现时间复杂度又成了一个问题…… –
Live
2019-09-21 00:57
线段树的话时间复杂度效率比较低吧,但是我觉得所有的递归时间和空间效率都低,而且某些题时间复杂度要求很苛刻,但是他还需要用递归思想,很头痛 –
Live
2019-09-21 00:51