algorithm - 有多个 child 的树 - 线性时间访问复杂度

标签 algorithm tree

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

我有一个树结构,其中一棵树节点将包含其子节点的引用列表。但是这里的问题是在寻找一个节点的 child 时,我们需要遍历需要线性时间(线性时间复杂度)的 child 列表。而且我还需要将这些全部存储为直接子项(因为子项用于直接子项)。

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

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

最佳答案

不是让每个节点都保留一个常规列表,而是让它保留一个排序列表(log n 查找)或一个 hashmap(恒定时间查找)。在这种情况下,排序可能是最好的选择,这样您就可以轻松地遍历元素并节省空间。

关于algorithm - 有多个 child 的树 - 线性时间访问复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18295870/

相关文章:

algorithm - 存储为字符串的数字的所有子序列的总和

r - 如何规划庭院灯的最有效路线

algorithm - 我如何合并两个二叉树

algorithm - 如果循环体中什么都没有发生,那么 for 循环的复杂度是多少

algorithm - 使边权重唯一的线性算法

algorithm - 经典(基于递归)深度优先搜索是否比基于堆栈的 DFS 的内存效率更高?

c - 无法理解这个函数的返回值

c - 递归树遍历

c - AVL 的右旋转出现问题?

javascript - 从文件路径构建树