노드에있는 값을 기반으로 특정 노드를 검색해야하는 일반 이진 힙 (MaxHeap)을 만들었습니다. Pre-OrderTraversal을 사용하는 검색 기능을 제공하고 Order n의 런타임을 제공해야합니다. 여기서 n은 힙의 노드 수입니다. 내 코드가 작동하지 않는 것 같습니다. preOrderT 함수에 두 번째 'else if'가 없습니다. 어떤 변화가있을 수 있는지 제안 해 주시겠습니까?힙 검색 기능
내 노드 클래스는 (힙 배열에 따라) 정수 키, 일반 개체 값 및 부모, leftChild 및 rightChild에 대한 참조를 포함하도록 정의되었습니다. 당신이 그것에게 rightChild
을 확인할 수있는 기회를 제공, 절대 leftChild
가있는 경우
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