N 개의 노드로 구성된 트리를 받았습니다. 트리는 N 노드와 N-1 에지로 구성된 완전 연결된 그래프입니다. 이 트리의 노드는 1에서 N까지 인덱싱됩니다. 인덱싱 된 노드 1이이 트리의 루트 노드라고 가정합니다. 루트 노드는 트리의 1 단계에 있습니다. 나무와 하나의 정수 x가 주어질 것입니다. 레벨 x에 누워있는 노드의 수를 찾아야합니다.bfs에서 각 레벨의 노드 수 찾기
입력 형식
첫 번째 줄은 트리의 노드 수를 나타내는 하나의 정수 N 구성되어 있습니다. 다음 n-1 라인 각각은 2 개의 정수 a와 b로 구성되며, 노드 a와 노드 b 사이의 비 방향성 에지를 나타냅니다. 다음 행은 단일 정수 x로 구성됩니다.
출력 형식
당신은 레벨 X에서 노드의 수를 나타내는 하나의 정수를 인쇄해야합니다.
아래 코드는 내가 작성한 코드이며 올바르지 않습니다. 오류를 찾도록 도와주세요.
첫 번째 문제는 코드가 종료되지 않을 수 있다는 것입니다 :
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Scanner;
public class LevelNodes {
public static ArrayList[] adj;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
boolean[] visites = new boolean[N];
ArrayList[] adj = new ArrayList[N];
for(int j=0;j<N;j++){
adj[j] = new ArrayList();
}
for(int i = 0;i < (N-1) ;i++){
int a = sc.nextInt();
int b = sc.nextInt();
adj[a-1].add(b);
adj[b-1].add(a);
}
int level = sc.nextInt();
int counter = 0;
LinkedList list = new LinkedList();
list.add(1);
counter++;
while(!list.isEmpty()){
int n = (Integer) list.poll();
for(int x = 0; x< adj[n-1].size();x++){
list.add(adj[n-1].get(x));
}
counter++;
if(counter == level){
System.out.println(list.size());
break;
}
}
}
}
안녕하세요 @Vivek, 안녕하세요. 코드를 디버깅하려 했습니까? 문제가 어디 있다고 생각합니까? 현재 귀하가 얻는 행동은 무엇이며 그 이유는 무엇입니까? –
어떤 오류 메시지가 나타 납니까? – brso05
'if (level <= 0 || N <= level) {System.out.println ("0"); System.exit (0); }'와 비슷하고'counter '가'level'과 같지 않을 때와 비슷합니다. – greybeard