我想知道是否有合適的算法來維持二叉樹的平衡,當知道元素總是按照順序插入。當元素按順序插入時保持二叉樹平衡
對此的一種選擇是使用標準方法從排序後的數組或鏈接列表中創建平衡樹,如this問題中討論的,還有this其他問題。但是,我希望有一種方法可以將少量元素插入樹中,然後對其執行查找,然後再添加其他元素,而不必將樹分解爲列表並重新制作整個事物。
另一種選擇是使用許多自平衡樹實現之一,AVL,AA,紅黑等等。但是,所有這些都在插入過程中施加了某種開銷,並且我想知道是否有一種方法可以避免這種情況,因爲限制因素是總是以增加的順序插入。因此,爲了清楚起見,我想知道是否有一種方法可以維護平衡的二叉樹,這樣我就可以在任何點插入一個任意的新元素並保持樹的平衡,假定樹的排序中的新元素大於全部元素已存在於樹中。
舉個例子,假設我有以下三種:
4
/\
/ \
2 6
/\ /\
1 3 5 7
有沒有一種簡單的方法插入一個新的元素時保持平衡,如果我知道元素將是大於7?
作業嗎?理論問題?如果這是真正的用法,那麼我會在這些條件下使用[跳過列表](http://en.wikipedia.org/wiki/Skip_list)而不是BST,並且添加總是最後一個元素。如果這有幫助,雖然它不是一棵樹,但讓我知道,我會寫它作爲答案。 – amit
@amit,這也是我的第一個猜測。 – phimuemue
@amit,它不是一個家庭作業問題,主要是出於好奇/理論。因此,雖然你說的其他數據結構如跳過列表(或者甚至可能是手指樹)可能非常適合,但我更感興趣的是這樣做到BST的方式。 – DarkOtter