π section08 - 3 - μ΄μ§νΈλ¦¬ μν(κΉμ΄μ°μ νμ)
μ΄μ§νΈλ¦¬ μνκ° λ¬΄μμΈμ§ λͺ¨λ₯΄λ μ¬λμ μ΄λ €μΈ μ μλ λ¬Έμ λ€. μ¬κΈ°μ μ΄μ§νΈλ¦¬λ λ무λ₯Ό λ€μ§μ΄ λμ λͺ¨μμΌλ‘ ν κ°μ λΆλͺ¨ λ Έλμ 2κ°μ μμ λ Έλλ₯Ό κ°κ³ μλ νΈλ¦¬κ΅¬μ‘°λ₯Ό μΌμ»«λλ€.
μ΄μ§νΈλ¦¬λ₯Ό μνν λλ 3κ°μ§ λ°©λ²μ΄ μλ€. μ μμν(preOrder)
, μ€μμν(inOrder)
, νμμν(postOrder)
κ° μλλ° μ΄λ»κ² μννλμ§ κ°λ΅νκ² μμ보μ.
첫 λ²μ§Έλ‘ μ μμν(preOrder)
λ λΆλͺ¨ → μΌμͺ½ μμ → μ€λ₯Έμͺ½ μμ μμΌλ‘ νμνλ€. μ μ¬μ§μ μν κ²°κ³Όλ 1-2-4-5-3-6-7
κ° λλ€.
λ λ²μ§Έλ‘ μ€μμν(inOrder)
λ μΌμͺ½ μμ → λΆλͺ¨ → μ€λ₯Έμͺ½ μμ μμΌλ‘ νμνλ€. μ΄λ μ£Όμν μ μ λ μ΄μ μμμ΄ μμ λκΉμ§ λ΄λ €κ° λ€μ μΌμͺ½ μμμ νμνλ κ²μ΄λ€. μ μ¬μ§μ μν κ²°κ³Όλ 4-2-5-1-6-3-7
κ° λλ€.
λ§μ§λ§μΌλ‘ νμμν(postOrder)
λ μΌμͺ½ μμ → μ€λ₯Έμͺ½ μμ → λΆλͺ¨ μμΌλ‘ νμνλλ° μ€μ μνμ λ§μ°¬κ°μ§λ‘ λ μ΄μ μμμ΄ μμ λκΉμ§ λ΄λ €κ° λ€μ μ€λ₯Έμͺ½ μμμ νμνλ€. μ μ¬μ§μ μν κ²°κ³Όλ 4-5-2-6-7-3-1
κ° λλ€.
μ¬μ€ μ΄λ κ² μ΄λ‘ μΌλ‘ μ΄λ»κ² μννλμ§ λ°°μλ λ§μ μ½λλ‘ κ΅¬ννλ €λκΉ μμ΄ μ μμ§μ΄μ§ μμλ€. μ΄μ§νΈλ¦¬λ₯Ό λ°°μ΄λ‘ ꡬννμ§ μκ³ DFS
λ‘ κ΅¬ννλ μ΄μ λ κ°λ¨νλλ°, λ
Έλμ μμΉλ₯Ό μ½κ² μ κ·Ό(indexing
)ν μ μμΌλ κΈ°μ΅ κ³΅κ°μ λλΉκ° μ¬νλ€λ λ¨μ μ΄ μλ€κ³ λ§μνμ
¨λ€. λ§μ½, 4κ°μ data
λ₯Ό λ°°μ΄λ‘ μ΄μ§νΈλ¦¬μ²λΌ νννλ©΄ μ¬μ©νμ§ μλ 11κ°μ 곡κ°μ΄ λλΉλλ€κ³ νμ
¨λ€.
μ΄ λ¬Έμ λ₯Ό ν λ μΌμͺ½ μμμ νμ¬ L(level)
μ 2λ°°
μ΄κ³ , μ€λ₯Έμͺ½ μμμ νμ¬ L(level)
μ 2λ°°+1
μ΄λΌλ μ±μ§μ μ΄μ©ν΄μ νμ΄λ³΄λΌκ³ νμ
¨λ€. κ²°λ‘ μ μΌλ‘ μ½λλ λ€μκ³Ό κ°μλλ°, μ κΈ°ν μ μ console.log
μ½λμ μμΉλ§ μμλλ‘ λ¬λΌμ‘μ λΏμΈλ° κ²°κ³Όκ° λ€λ₯΄κ² λμ¨ κ²μ΄λ€.
// μ μμν(preOrder)
function solution1(v){
function preOrder(v){
if(v>7) return;
else{
console.log(v);
preOrder(v*2);
preOrder(v*2+1);
}
}
preOrder(v);
}
solution1(1)
ππ½ 1 2 4 5 3 6 7
// μ€μμν(inOrder)
function solution2(v){
function inOrder(v){
if(v>7) return;
else{
inOrder(v*2);
console.log(v);
inOrder(v*2+1);
}
}
inOrder(v);
}
solution2(1)
ππ½ 4 2 5 1 6 3 7
// νμμν(postOrder)
function solution3(v){
function postOrder(v){
if(v>7) return;
else{
postOrder(v*2);
console.log(v);
postOrder(v*2+1);
}
}
postOrder(v);
}
solution3(1)
ππ½ 4 5 2 6 7 3 1
λκΈ