基于数组实现的不相交集最大高度及simpleFind最坏时间复杂度问询
不相交集测试题解答
问题1:最终单棵树的最大高度
你的判断正确,答案为 n-1。
实现逻辑说明:simpleUnion 没有任何合并优化规则,仅要求传入两个根节点,直接将第一个根的父节点设为第二个根。如果我们每次都将已合并好的整棵树的根节点,挂载到新的单个独立节点的根节点下,每次合并都会让树的高度加1,最终合并所有节点后会形成一条链式结构,根到叶子的最长路径边数正好为n-1。
问题2:simpleFind的最坏时间复杂度
答案为 O(n),并非O(log n)。
逻辑说明:O(log n)的查找复杂度是不相交集引入按秩合并、按大小合并等优化策略后的结果。本题所用的simpleUnion没有优化,最坏场景下会生成高度为n-1的链式树,此时查找最底层叶子节点的根时,simpleFind需要遍历从叶子到根的所有节点,遍历次数和节点数n呈线性关系,因此最坏时间复杂度为O(n)。
内容的提问来源于stack exchange,提问作者chae yeon
相关产品推荐
相关产品推荐

