let bfs = function (node) {
let queue = [node];
const values = [];
while (queue.length > 0) {
const head = queue[0];
queue = queue.slice(1);
values.push(head.value);
head.children.forEach((child) => queue.push(child));
}
return values;
};
// μ΄ μλ μ½λλ λ³κ²½νμ§ μμλ λ©λλ€. μμ λ‘κ² μ°Έκ³ νμΈμ.
let Node = function (value) {
this.value = value;
this.children = [];
};
// μ Node κ°μ²΄λ‘ ꡬμ±λλ νΈλ¦¬λ λ§€μ° λ¨μν ννμ νΈλ¦¬μ
λλ€.
// membership check(μ€λ³΅ νμΈ)λ₯Ό λ°λ‘ νμ§ μμ΅λλ€.
Node.prototype.addChild = function (child) {
this.children.push(child);
return child;
};
λ μ΄ κ°μλ‘ μ΄λ €μμ§ μκ³ λ¦¬μ¦..μ΄μ μκ³ λ¦¬μ¦μ΄ 무μμΈκ°μ? μλ£κ΅¬μ‘°λ 무μμΈκ°μ? λ¨Ήλ건κ°μ? μ΄ λ¬Έμ λ₯Ό 보면μ μ μ λ²μ£Όμ μ€ν°λ 리λλΆμ΄ μ΄ μλ£κ΅¬μ‘° μ°Έκ³ νλΌκ³ 첨λΆν΄μ£Όμ κ² λ μ¬λλ€. μ΄λ¬Έμ λ₯Ό μν λ°κ±°λ¦ νλΌκ³ μ£Όμ ¨κ΅¬λ!! λ λ°μλ€κ³ λμ€μ λ΄μΌνμ§ νκ³ μ΄λ¬Έμ λ₯Ό νμ§ λͺ»νκ³ κ²°κ΅ λ νΌλ₯Ό λ³΄κ³ νΌ λμ μμ μκ² λ°μ±νλ μκ°μ κ°μ Έλ³Έλ€. λ§€μΌ λ°μ±ν΄λ λ¬λΌμ§μ§ μλ λλ μ λ§ λͺ»λ¬λ€... μμ μ°¨λ €μ€λ λ λ¨Ήμ§ λͺ»ν μΈμμ λ°λ³΄κ° μ΄λ μλκ°..μ¬κΈ°...λ°λ‘ μ¬κΈ°...μ€λ λ λ°μ±μ μκ°μ κ°κ³ 리λλΆμ΄ μ£Όμ μλ£ κ΅¬μ‘° λ³΄κ² μ΅λλ€.
μ΄ μκ³ λ¦¬μ¦ νκΈ° μν μλ£κ΅¬μ‘° νμ νμνλ€.
DFS
μ BFS
λ λνμ μΈ κ·Έλν νμ μκ³ λ¦¬μ¦μ΄λ€
μ°Έμ‘° λ§ν¬