2015-12-07 46 views
0

我想知道是否有可能將索引節點插入到索引號已經在該樹內而沒有花費太多的樹中。例如,如果我有索引號從1到10的樹節點,並且我想插入應該具有索引號8的節點。那麼是否可以以某種方式重組此樹,或者必須增加值9和10?如果還有其他增加方式,我應該如何將索引放在這棵樹內?插入已存在的索引

+1

請澄清你的問題。 「樹」是什麼意思。有很多'樹'數據結構。 – Tempux

+0

我的意思是一般樹有索引節點 – OrdinaryProgrammer

+0

是否有索引節點的規則? – Tempux

回答

0

如果你有自己的結構,你可以像插入任何其他節點一樣插入它。它應該工作,除非你在插入過程中看到相同的鍵時做了特別的事情。

根據您爲比較而設置的條件,它將以等價值節點的左邊或右邊爲結尾(如果您的樹以某種方式平衡自己,可能會發生變化)。顯然他們不會是左/右孩子,但會插入該子樹中的某處。你的情況應該是這樣的(if <= go left else go right,你不能有if < go left ; if > go right,因爲現在你有第三種情況平等)。

不要期待查找工作(您需要處理一系列值,而不僅僅是一個節點)。

如果使用C++ mapset看到multimapmultiset

+0

我知道它會結束到左側或右側,但我怎麼能放置一個節點充滿節點的樹,而無需向左或向右移動其他節點。我無法想象這項工作應該如何。我應該在每個節點中存儲兩個以上的孩子嗎? – OrdinaryProgrammer

+0

假設你想放在左邊。你去到左邊的節點(到目前爲止使用的代碼相同)。你比較你想插入什麼節點。因爲它是一個搜索樹,它現在會失敗比較,並告訴你去正確的。你繼續下去,直到你沒有合適的孩子。當你到達那裏時,爲你想插入的值創建一個新節點,並將它作爲你停止節點的正確子節點進行鏈接。 – Sorin

+0

具有相同值的節點可能不是近鄰(取決於樹),但是如果按順序遍歷,則應該依次獲取相同的值節點。 – Sorin