[英]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.