【发布时间】:2020-05-02 22:55:16
【问题描述】:
当 h 是 BST 中节点的高度 n 倍(树中元素的数量)时,做 O(h) 算法的时间复杂度是多少,我相信它是 O(n) 而不是 O(n* h) 但我不知道如何证明这一点。
在 O(h) 中工作的特定算法是在 BST 中查找元素的有序前驱。
【问题讨论】:
标签: algorithm time-complexity binary-search-tree
当 h 是 BST 中节点的高度 n 倍(树中元素的数量)时,做 O(h) 算法的时间复杂度是多少,我相信它是 O(n) 而不是 O(n* h) 但我不知道如何证明这一点。
在 O(h) 中工作的特定算法是在 BST 中查找元素的有序前驱。
【问题讨论】:
标签: algorithm time-complexity binary-search-tree
在任何 BST 中计算 n 次中序后继的成本是 O(n)。要看到这一点,请计算您触摸树中每个边缘的次数。当你第一次探索子树时,你将沿着边缘传递一次,离开它之后再传递一次。总的来说,这意味着您最多触摸每条边两次,因此完成的总工作量为 O(n)。
请注意,一般而言,您可以在 O(hn) 处具有高度 h 的 BST 上执行 n O(h) 次的成本上限,并且永远不会低估事情。但是,如果您更具体地了解您正在使用的算法,例如在本例中,您可以获得更严格的界限。
【讨论】:
O(n²)。
二叉搜索树是不平衡的,这意味着节点的高度可以等于树的节点数,因此 O(n²)。
【讨论】: