ノードに存在する値に基づいて特定のノードを検索するための一般的なバイナリヒープ(MaxHeap)を作成しました。私は、Pre-OrderTraversalを使用して検索機能を実行し、Order nの実行時間を与えるようにしました。ここで、nはヒープ内のノードの数です。私のコードは動作していないようです。 preOrderT関数に2番目の「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