我很好的實現部分,我只是想知道如何將值插入基於比較器或類似的樹形圖。 請不要只給與可比較器和比較器的執行情況。插入值時,比較和比較器如何在treemap或treeset中內部工作?
基本上我想知道如何在Red Black Tree(TreeMap的底層數據結構)中插入值時Comparable和Comparator是如何不同的。 插入將如何完成。? 如果它是可比較的,用哪個對象插入對象將進行比較?如果它是比較器,則將比較哪兩個對象以獲得樹中的適當位置。 如果有一個例子,它會很好
我很好的實現部分,我只是想知道如何將值插入基於比較器或類似的樹形圖。 請不要只給與可比較器和比較器的執行情況。插入值時,比較和比較器如何在treemap或treeset中內部工作?
基本上我想知道如何在Red Black Tree(TreeMap的底層數據結構)中插入值時Comparable和Comparator是如何不同的。 插入將如何完成。? 如果它是可比較的,用哪個對象插入對象將進行比較?如果它是比較器,則將比較哪兩個對象以獲得樹中的適當位置。 如果有一個例子,它會很好
TreeMap
和TreeSet
基本上是二叉樹。由於這個位置,一個節點可以被找到/將插入可以很容易地找到使用二進制搜索:
//just a stub of how the search for a specific node might work (this is not the real implementation
Node currentNode = ...
if(comparator.compare(currentNode.content , toSearch) < 0)
currentNode = currentNode.leftNode();
else
...
謝謝你的回答。 即使我知道TreeMap的內部數據結構是Red Black Tree.i想知道當我們實際插入值時這兩個工作有多不同。假設比較對象與其自身,比較器比較兩個相同類型的對象。 當談到在紅黑樹插入部分如何都將工作? 如果你可以用任何一個例子來解釋,那就太好了。 –
@NarahariBabuKannemadugu啊,好吧,我誤解了這個問題。這很簡單:'a.compareTo(b)'應該總是產生與'someComparator.compare(a,b)'相同的輸出。因此,我們可以簡單地將這兩行中的任何一行與另一行進行切換,以比較值。剩下的就是匹配插入/刪除方法的簽名。 – Paul
@NarahariBabuKannemadugu你應該改變一些更匹配的問題,比如「比較器和可比較器是如何互換的」?只是更準確地匹配問題 – Paul
你還需要什麼除了執行? – Jabir
可能重複的[Java:Comparable vs Comparator](http://stackoverflow.com/questions/4108604/java-comparable-vs-comparator) –
我想知道插入部分,並插入到紅黑樹如何這兩個彼此不同。 –