满二叉树O(nlogn)和链O(n)的复杂度基本卡不了这个算法,但是使用树套树可以把它卡到O(n(log(n/k)∗k)),即O(n×(klog(n)−klog(k))) 。
对于构造220个点(略大于106)的一棵树,可以分成 210 层,每层一棵 210 个节点的树。
先构建 1024 棵满二叉树,然后用1023条边让他们链接,每棵树之间,上面一棵树的其中一个叶子节点和下面那棵树的根节点连一条边。
时间复杂度就可以被卡到O(106×10×20−10×10)=O(106×100)=O(108) 。
可以卡常数较大的程序。
这个数据不知道可不可行(?!)