【发布时间】:2017-07-27 08:48:24
【问题描述】:
我所说的通用树是指具有多个子节点的不平衡树(不限于每个分支的 2 个子节点,例如二叉树)。删除节点、插入节点、查找节点的 Big-O 复杂度是多少
【问题讨论】:
标签: data-structures
我所说的通用树是指具有多个子节点的不平衡树(不限于每个分支的 2 个子节点,例如二叉树)。删除节点、插入节点、查找节点的 Big-O 复杂度是多少
【问题讨论】:
标签: data-structures
在平衡 BST 中搜索的平均时间复杂度为 O(log(n))。在不平衡二叉树中搜索的最坏情况复杂度为 O(n)。
【讨论】:
O(log-base-d(n))。诚然,我们在渐近分析中忽略了常数(如对数的底),所以 O(log(n)) 实际上是正确的。
如果您说的是一棵对其数据没有任何特殊处理的常规 k-ary 树,那么假设存在 n 节点,则要在树中找到任何一个节点都需要 O(n) 时间。
插入节点将是O(1),因为您可以将其存储在任何您想要的位置,而删除节点将是O(n),因为您必须查看每个节点(最坏的情况)才能找到要删除的节点,而且由于数据没有顺序,因此您不必对其余节点执行任何操作。
【讨论】: