【问题标题】:Binary Search Tree inorder predecessor space complexity二叉搜索树中序前驱空间复杂度
【发布时间】:2019-03-20 01:48:51
【问题描述】:

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

这些假设是正确的还是我遗漏了什么?

【问题讨论】:

    标签: binary-search-tree computer-science


    【解决方案1】:

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

    n1, n2 是节点,这样n2 是根,n1 是空的。 让v 成为您要查找的节点

    虽然 n2 不是 v:

    • n1 := n2
    • 如果v.value > n2.value, n2 := n2.right
    • 否则n2 := n.left

    返回n1

    我保留了一个常数 (2) 指针,因此复杂度为 O(1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多