function solution(n, wires) {
var answer = Number.MAX_SAFE_INTEGER;
let tree = Array.from(Array(n+1),()=>[])
wires.map((element)=>{
let [a,b] = element;
tree[a].push(b);
tree[b].push(a);
})
function searchTree(root, exceptNum) {
let count =0;
let visit = [];
let queue = [root];
visit[root] = true;
while(queue.length){
let index = queue.pop();
tree[index].forEach((element)=>{
if(element !== exceptNum && visit[element]!==true){
visit[element] = true;
queue.push(element);
}
})
count+=1;
}
return count;
}
wires.forEach(element => {
let[a,b] = element;
answer = Math.min(answer, Math.abs(searchTree(a,b)-searchTree(b,a)))
});
return answer;
}
내 코드 설명
BFS로 특정 노드를 기준으로 연결된 노드를 방문한다. 전선 배열에서 한 요소를 선택해서 두 노드 중 하나를 exceptnum으로 지정해서 그 부분을 끊는다.