我已經制作了一個通用Binary Heap(MaxHeap),其中我必須根據節點中存在的值搜索特定節點。我已經完成了使用Pre-OrderTraversal的搜索功能,並且它應該給出Order n的運行時間,其中n是堆中節點的數量。我的代碼似乎不工作。它永遠不會進入preOrderT函數中的第二個'else if'。你能建議可以做些什麼改變嗎?堆的搜索功能
我的節點類已被定義爲包含一個整數鍵(根據這個鍵排列堆),一個通用對象值以及對父類leftChild和rightChild的引用。
public Node<E> search(E p){
Node<E> N;
N= preOrderT(root, p);
return N;
}
public Node<E> preOrderT(Node<E> N, E p){
Node<E> M=null;
if (N.value==p) M=N;
else if (M==null && N.leftChild!=null){ M=preOrderT(N.leftChild, p);}
else if (M==null && N.rightChild!=null){ M=preOrderT(N.rightChild, p);}
return M;
}
'println'是你的朋友 - '調用println( 「N.value:」 + N.value + 「P」 + P);',看看發生了什麼事情 – rbellamy