二叉搜索树的前序空间复杂度

时间:2019-03-20 01:48:51

标签: binary-search-tree computer-science

我正在研究二进制搜索树,但无法找到有关找到给定节点的前任所需空间的大量信息。基于迭代方法,我认为我需要O(1)空间(就地),因为我们只需要一个变量和堆栈上的单个节点即可。要递归地完成此操作,我们必须维护一个堆栈。由于可以遍历最左边/最小的节点,因此有可能遍历二叉搜索树的整个高度。因此,为此的空间复杂度将为O(h)。

这些假设是否正确,或者我有什么遗漏?

1 个答案:

答案 0 :(得分:1)

请记住,每个递归调用都会降低高度,并且每个高度值只有一个调用。因此,我们可以执行迭代搜索。

n1, n2成为节点,以n2为根,n1为空。 假设v是您要寻找的节点

n2不是v时:

  • n1:= n2
  • 如果v.value> n2.valuen2:= n2.right
  • 其他n2:= n.left

返回n1

我保持了恒定数量的指针(2),因此复杂度为O(1)