簡體   English   中英

根據給定的遍歷構造BST?

[英]Construct BST from given preorder traversal?

這個問題來自http://www.geeksforgeeks.org/construct-bst-from-given-preorder-traversa/

我可以想到下面的簡單算法(java在TreeMap中內部遵循的那種算法)

  1. 我們可以開始一個接一個地添加節點。 在添加時,開始將每個節點與根節點進行比較,然后確定右/左位置
  2. 遞歸執行

但是我在谷歌或同一個鏈接的任何地方都沒有提到它。根據我的理解,它的時間復雜度將是nlog(n)。 我知道它不比第二種方法O(n)好,但比第一種方法O(n ^ 2)好嗎?

您是正確的,它比第一種方法更好,但是第二種方法甚至更好,因為時間復雜度為O(n)。

如果您事先沒有完整的輸入,那么建議的方法會更好,但是當您准備好完整的輸入時,則不必一個個地添加它,而涉及到查找每個節點的位置(登錄)。 因此對於n個節點,它將為nlog(n)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM