[英]Placing Nodes into a Binary Heap in Java
到目前為止,我為每個節點提供一個ID,該ID用於與之比較直到找到具有匹配ID的節點。 我需要一種提高效率的方法,而不必在所有節點中進行遞歸搜索。
我想知道是否有一些數學技巧可以找到正確的節點並指向它,而不必遍歷所有節點才能找到正確的節點。
public void insert(int info){
Node temp = new Node(info, N+1);
if (this.isEmpty()) { // First item is always the root.
this.root = temp;
}
else{
balance(temp, root);
}
N++;
}
public void balance(Node key, Node target){
if (key.id == 2*target.id || (key.id == (2*target.id + 1))){
if (key.id == 2*target.id){
target.leftChild = key;
key.parent = target;
last = key;
}
else {
target.rightChild = key;
key.parent = target;
last = key;
}
if (key.info < target.info) {
swim(key);
return;
}
}
可悲的是,沒有辦法遍歷整個鏈表來找到一個節點。 這就是鏈接列表,鏈接列表的原因! 指向唯一節點的唯一指針是根指針或列表中的上一個節點。 如果向每個節點添加previousNode指針,則可以向后和向前遍歷鏈接列表,但這可能對您的情況沒有幫助。
您現在可能想到的最后一件事是:“好吧,如果每個節點都有一個指向其他節點的指針怎么辦?” 並且這將是完整圖形ADT的一種形式,而不是鏈表ADT。 如果查找特定節點是您的主要目標,那么我建議您使用數組(或ArrayList)或哈希表,而不要使用鏈接列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.