我考后整整写了 1 个多小时 …
sol:
考验强大的数学推演能力
我们把一个节点视作 01 序列,走左子树相当于在序列末尾添加 0 ,走右子树相当于添加 1 。
那么两个点的距离其实取决于公共前缀的长度。
所以我们想到枚举 lca ,同时根据完全二叉树的对称性可知相同深度的点对答案的贡献是一样的。
首先枚举 i = 0 ~ n-1 表示深度。
这里必须分两种情况计算:
- 两个点在同一子树内, 2 i ∗ 2 m = 2 i + m 2^{i} * 2^{m}=2^{i+m} 2i∗2m&#