一般树到二进制树转换复杂性
-
13-10-2019 - |
题
将一般树转换为二进制树的时间和空间复杂性是什么?
谢谢
解决方案
我不知道您的意思是“一般树”。无论如何,插入到平衡的二元树中的底色复杂性是 O(log n)
, , 在哪里 n
是当前在树上的物品数量,因此从某些项目列表中构建一棵完整的树 O(n log n)
, , 在哪里 n
是要插入的项目总数。
您还必须包括从另一棵树获取物品所需的时间。那个时间取决于您拥有的树类型。为了参数,我假设您可以在线性时间内穿越它,因此从现有树中获取数据为 O(n)
.
这使您的总时间复杂性 O(n + (n log n))
.
需要额外的空间 n * sizeof(node)
, , 在哪里 sizeof(node)
是二进制树节点的大小。请注意,如果存储在“通用树”节点中的项目是指示符,则您不必支付复制实际对象的费用 - 只是二进制树节点的开销,这通常是三个指针:数据,左子链接和右子链接。
不隶属于 StackOverflow