簡體   English   中英

為什么淺二叉樹更好?

[英]Why is shallow binary tree better?

為什么我們總是想要淺二叉樹? 在什么情況下淺二叉樹比非淺/最小深度樹更好?

我只是很困惑,因為我的教授一直說我們希望以盡可能淺的二叉樹為目標,但我不明白為什么。 我猜smallar更好,但有什么具體的具體原因嗎? 對不起,我的英語不好謝謝你的幫助

我假設這是關於二叉搜索樹 - 如果不是,請告訴我,我可以更新這個答案。

在二叉搜索樹中,幾乎每個操作(插入、刪除、查找、后繼、前驅、最小、最大、范圍搜索、拆分、連接等)的成本都取決於二叉搜索樹的高度。 這樣做的原因是這些操作的工作原理是從根部沿着樹向下走,直到它們從樹上掉下來或找到它們要找的東西。 樹越深,如果輸入錯誤,這需要的時間越長。

通過調整節點以保持樹的高度較低,我們可以使這些操作通常非常快。 高度為 h 的樹最多可以有 2 h - 1 個節點,這與 h 相比是一個巨大的數字(假設 h = 20,2 h - 1 超過一百萬!),所以如果你努力將節點打包到更高更靠近根的樹中,您將獲得更好的操作速度。

在某些情況下,擁有盡可能不平衡的樹實際上是有益的。 例如,如果您有一個二叉搜索樹,並且事先知道某些元素會比其他元素被查找得更多,那么您可能希望將樹中的節點打亂,將高頻項放在更高的位置,將低頻項放在樹中更深的項目。 在非二叉搜索樹上下文中,隨機化可融合優先級隊列通過隨機走下樹進行合並來工作,樹不平衡,這些操作越有可能因從樹上掉下來而提前結束。

暫無
暫無

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

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