我有一個關於Balanced BST
的理論問題。完美平衡二叉搜索樹
我想建立Perfect Balanced Tree
有2^k - 1
節點,從一個普通unbalanced BST
。我能想到的最簡單的解決方案是使用排序的Array/Linked list
並遞歸地將數組分成子數組,並從中構建Perfect Balanced BST
。
然而,在非常大的樹的尺寸的情況下,我將需要在相同的大小來創建Array/List
所以這種方法會消耗大量的存儲器。
另一種選擇是使用AVL
旋轉函數,逐個元素地插入並根據樹平衡因子 - 左右子樹的三個高度來平衡樹的旋轉。
我的問題是,我對我的假設是否正確?有沒有其他的方式來創建一個完美的BST
從不平衡BST
?
如果您有一棵大樹並且想要在不改變現有結構的情況下對樹進行轉換,則某些旋轉函數非常有用。 - 結果是否真的必須完美平衡?問題的背景是什麼? – michas
是的,它必須完美平衡。這是一個學術項目的一部分。 「一些輪換功能」是什麼意思?據我所知,有四個旋轉函數很容易實現。 – OlejkaKL
不同種類的樹木使用稍微不同的旋轉方式。例如比較AVL和紅黑樹。 – michas