【问题标题】:Construct BST from given preorder traversal?从给定的前序遍历构造 BST?
【发布时间】:2016-10-11 14:53:08
【问题描述】:

这个问题来自http://www.geeksforgeeks.org/construct-bst-from-given-preorder-traversa/

我能想到下面的简单算法(Java 内部对 TreeMap 遵循的那种相同)

  1. 我们可以开始一一添加节点了。添加开始时将每个节点与根节点进行比较,然后确定右/左位置
  2. 递归执行

但我在谷歌或同一链接上的任何地方都没有看到提及它。据我了解,它的时间复杂度将是 nlog(n)。我理解它并不比第二种方法 O(n) 好,但比第一种方法 O(n^2) 好不是吗?

【问题讨论】:

标签: java algorithm


【解决方案1】:

你是对的,它比第一种方法更好,但第二种方法甚至更好,因为时间复杂度是 O(n)。

当您事先没有完整的输入时,您建议的方法会更好,但是当您准备好完整的输入时,您不必一一添加它,这涉及查找每个节点的位置(logn)。所以对于 n 个节点,它将是 nlog(n)

【讨论】:

    猜你喜欢
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    相关资源
    最近更新 更多