将一般树转换为二进制树的时间和空间复杂性是什么?

谢谢

有帮助吗?

解决方案

我不知道您的意思是“一般树”。无论如何,插入到平衡的二元树中的底色复杂性是 O(log n), , 在哪里 n 是当前在树上的物品数量,因此从某些项目列表中构建一棵完整的树 O(n log n), , 在哪里 n 是要插入的项目总数。

您还必须包括从另一棵树获取物品所需的时间。那个时间取决于您拥有的树类型。为了参数,我假设您可以在线性时间内穿越它,因此从现有树中获取数据为 O(n).

这使您的总时间复杂性 O(n + (n log n)).

需要额外的空间 n * sizeof(node), , 在哪里 sizeof(node) 是二进制树节点的大小。请注意,如果存储在“通用树”节点中的项目是指示符,则您不必支付复制实际对象的费用 - 只是二进制树节点的开销,这通常是三个指针:数据,左子链接和右子链接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top