从给定的前序遍历构造BST?

时间:2016-10-11 14:53:08

标签: java algorithm

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

我可以想到下面的简单算法(类似于Java内部对TreeMap所遵循的那种)

  1. 我们可以逐个添加节点。添加开始比较每个节点与根节点,然后决定右/左位置
  2. 递归地执行
  3. 但是我没有在谷歌或同一个链接上看到它的任何提及。我们理解它的时间复杂性将是nlog(n)。我理解它不比第二种方法更好,它是O(n)但比第一种方法更好,它是O(n ^ 2)不是吗?

1 个答案:

答案 0 :(得分:1)

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

如果您没有提前完成输入,但是当您准备好完整的输入时,您建议的方法会更好,那么您不必逐个添加它,包括查找每个节点的位置( LOGN)。所以对于n个节点,它将是nlog(n)