簡體   English   中英

高度為h的二叉搜索樹的構造

[英]Binary Search Tree Construction of height h

給定前n個自然數作為BST的鍵,如何確定高度為'h'的所有可能樹的根節點。

我已經想出了一種蠻力方法,其中我用n個節點構造了所有可能的樹,然后選擇了高度為h但時間復雜度接近O(n!)的樹。 有人可以建議一種更好的方法嗎?

問題陳述。 鑒於自然數nh ,確定到底的所有元素root1..n使得root是在二叉搜索樹的根1..n高度的h

解決方法 我們可以從1..n任何數字開始在1..n上構建簡並的二叉搜索樹,方法是將其在root拆分。 這會將下限從舊解決方案更改為h-1 ,而上限保持不變,從而呈現出完整的邊界,如下所示:

 h-1 <= max(root-1, n-root) <= 2^h - 1

舊的解決方案(僅對於完整的二叉樹正確)。 高度為h完整二叉樹至少具有2h+1節點,並且最多具有2^(h+1)-1節點 不難看出,不僅對於二叉樹,而且對於二叉搜索樹,這些界限都是緊密的。 特別是,它們適用於leftright您的子樹root 由於這是1..n上的二叉搜索樹,因此您將使left的元素正好包含元素1..(root-1) ,而right的元素right包含元素(root+1)..n

這意味着以下條件既是必要條件,也是充分條件: leftright較大子樹必須滿足不等式

2*(h-1) + 1 <= nodes(subtree) <= 2^h - 1

換句話說, root的可能值恰好是1..n滿足的所有值

2*(h-1) + 1 <= max(root-1, n-root) <= 2^h - 1

更新。 我盲目地看了我在Wikipedia上發現的不平等,卻沒有意識到它僅適用於完整的二叉樹。

暫無
暫無

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

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