有多个孩子的树 - 线性时间访问复杂性

时间:2013-08-18 05:03:36

标签: algorithm tree

我的问题不在于持有树的结构,而在于我的方式;因为我认为这种实施从长远来看会花费很多。

我有一个树结构,其中树节点将包含其子节点的引用列表。但问题是在找到Node的子节点时,我们需要查看将占用线性时间(线性时间复杂度)的子列表。而且我还需要将这些全部存储为直接孩子(因为孩子的话用于直系孩子)。

现在,有没有什么方法可以将除List结构之外的所有子节点放在一起,以便从List中检索和删除子节点是有效的和对数的(如果可以的话)? enter image description here

如果我要遍历树然后从根节点转到正确的子节点,我将必须检查每个子节点的条件。该检查将是线性搜索和检查。 我只想要一种技术来帮助改进在遍历期间在子列表中搜索正确子项的算法。

1 个答案:

答案 0 :(得分:1)

不是让每个节点保持常规列表,而是让它保持排序列表(log n lookup)或hashmap(常量时间查找)。在这种情况下,排序可能是最好的,因此您可以轻松地迭代元素并节省空间。

相关问题