我想知道是否有可能將索引節點插入到索引號已經在該樹內而沒有花費太多的樹中。例如,如果我有索引號從1到10的樹節點,並且我想插入應該具有索引號8的節點。那麼是否可以以某種方式重組此樹,或者必須增加值9和10?如果還有其他增加方式,我應該如何將索引放在這棵樹內?插入已存在的索引
插入已存在的索引
回答
如果你有自己的結構,你可以像插入任何其他節點一樣插入它。它應該工作,除非你在插入過程中看到相同的鍵時做了特別的事情。
根據您爲比較而設置的條件,它將以等價值節點的左邊或右邊爲結尾(如果您的樹以某種方式平衡自己,可能會發生變化)。顯然他們不會是左/右孩子,但會插入該子樹中的某處。你的情況應該是這樣的(if <= go left else go right
,你不能有if < go left ; if > go right
,因爲現在你有第三種情況平等)。
不要期待查找工作(您需要處理一系列值,而不僅僅是一個節點)。
如果使用C++ map
或set
看到multimap
或multiset
我知道它會結束到左側或右側,但我怎麼能放置一個節點充滿節點的樹,而無需向左或向右移動其他節點。我無法想象這項工作應該如何。我應該在每個節點中存儲兩個以上的孩子嗎? – OrdinaryProgrammer
假設你想放在左邊。你去到左邊的節點(到目前爲止使用的代碼相同)。你比較你想插入什麼節點。因爲它是一個搜索樹,它現在會失敗比較,並告訴你去正確的。你繼續下去,直到你沒有合適的孩子。當你到達那裏時,爲你想插入的值創建一個新節點,並將它作爲你停止節點的正確子節點進行鏈接。 – Sorin
具有相同值的節點可能不是近鄰(取決於樹),但是如果按順序遍歷,則應該依次獲取相同的值節點。 – Sorin
- 1. 已編入索引的NSFetchedResultsController
- 2. 插入搜索項子索引索引
- 3. MongoDB的索引已經存在
- 4. 已編入索引的搜索功能
- 5. 插入到數組在不存在的索引
- 6. 檢測已插入數據mysql的唯一索引
- 7. ElasticSearch創建索引,索引已經存在異常
- 8. RavenDB索引創建錯誤:索引已存在
- 9. 插入基礎值到一個不存在的索引
- 10. 選擇插入索引?
- 11. 確定插入索引
- 12. C++ std :: set插入索引
- 13. 插入索引視圖
- 14. 插入聚簇索引表
- 15. 索引和插入操作
- 16. MongoDB:插入唯一索引
- 17. linq sql插入時已經存在
- 18. 向模式添加已編入索引的非存儲字段
- 19. 在特定索引處插入新的行到已排序的ADG中
- 20. ORACLE在索引表上插入性能
- 21. 在索引中插入一個列表
- 22. 在特定索引處插入PHP
- 23. 在索引處插入UIIMageView:0
- 24. 如何在string.format中插入索引?
- 25. Python的matplotlib插入索引的陰謀
- 26. 匹配函數插入升序多索引的順序索引
- 27. 如何發現存儲實體的屬性是否已編入索引或未編入索引?
- 28. 返回新插入的索引值
- 29. 創作的部分索引插入
- 30. NumPy的索引數組插入
請澄清你的問題。 「樹」是什麼意思。有很多'樹'數據結構。 – Tempux
我的意思是一般樹有索引節點 – OrdinaryProgrammer
是否有索引節點的規則? – Tempux