μμ£Ό μ°λ μλ£κ΅¬μ‘°μΈ 리μ€νΈ, ν λ±κ³Ό λ€λ₯΄κ², νΈλ¦¬λ κ³μΈ΅μ μΈ ννλ₯Ό λλ€.
μ¦ μ λ ₯ λ°λ λ°μ΄ν° κ°μ μνκ΄κ³κ° μ‘΄μ¬νλλ°, μμ μλ λ Έλλ₯Ό λΆλͺ¨ λ Έλ, κ·Έ μλμ μ΅λ 2κ°μ λ Έλλ₯Ό μμ λ ΈλλΌκ³ λͺ μΉνλ€.
(μΆμ²: https://gmlwjd9405.github.io/2018/08/12/data-structure-tree.html)
- λ£¨νΈ λ Έλ (Root Node)
- μ΄λ¦ κ·Έλλ‘ νΈλ¦¬μ λΏλ¦¬, μ¦ νΈλ¦¬μ μμμ μ μμΉν λ Έλλ₯Ό λ§νλ€.
- λΆλͺ¨ λ Έλ (Parent Node)
- μμ λ Έλμ μμ μλ λ Έλλ‘, μ΅λ 2κ°μ μμ λ Έλλ₯Ό κ±°λλ¦°λ€.
- μμ λ Έλ (Child Node)
- λΆλͺ¨ λ Έλμ μλμ μμΉνλ λ Έλλ₯Ό λ§νλ€. λ μμ λ Έλλ νμ (μλ§€)κ΄κ³
Siblings
λΌ λΆλ₯Ό μ μλ€.
- 리ν λ Έλ (Leaf Node)
- λλμμ λ μ΄μ λ€λ₯Έ λλ¬΄λ‘ μ΄μ΄μ§μ§ μλ κ²μ²λΌ, μμ λ Έλκ° μ‘΄μ¬νμ§ μλ λ Έλλ₯Ό λ§νλ€.
- λΆλΆ νΈλ¦¬ (Sub-tree)
- μ 체 νΈλ¦¬μ λ΄λΆμ μμΉν μμ νμ νΈλ¦¬λ₯Ό μΌμ»«λλ€.
- λ 벨 (κΉμ΄)
- νΉμ λ Έλκ° λ£¨νΈ λ Έλλ‘λΆν° λ¨μ΄μ§ μ λλ₯Ό λ§νλ€.
- λ 벨μ 0λΆν° μμνλ€.
- λμ΄
- λ 벨과 λΉμ·ν κ°λ μ΄μ§λ§, νΉμ λ Έλλ₯Ό λμμΌλ‘ λ§νλ€κΈ°λ³΄λ€λ μ 체 νΈλ¦¬λ₯Ό κΈ°μ€μΌλ‘ λ§ν λ μ¬μ©νλ€.
- Ex) μ νΈλ¦¬λ 3μ λμ΄λ₯Ό κ°κ³ μλ€.
μ΄μ§ νΈλ¦¬λ, κ° λ Έλκ° μ΅λ 2κ°μ μμλ Έλλ₯Ό κ±°λ릴 μ μλ νΈλ¦¬μ΄λ€.
μ΄μ§ νΈλ¦¬λ μ°μμκ° λ€μνκ³ μ©μ΄ν΄, νΈλ¦¬λ₯Ό μ¬μ©ν λλ μΌλ°μ μΌλ‘ μ΄μ§ νΈλ¦¬λ₯Ό μ΄μ©νλ€.
μ΄λ¬ν μ΄μ§ νΈλ¦¬μλ κ°μ§ λͺ¨μμ λ°λΌ 3κ°μ§μ μ’ λ₯λ‘ λλλ€.
(μΆμ²: https://www.wikiwand.com/en/Binary_tree)
0
κ° νΉμ 2
κ°μ μμ λ
Έλλ₯Ό κ°κ³ μλ κ²μ λ§νλ€.(μΆμ²: https://www.wikiwand.com/en/Binary_tree)
μμ μ΄μ§ νΈλ¦¬λ λ§μ§λ§ λ 벨μ μ μΈν λͺ¨λ λ 벨λ€μμλ λ Έλλ€μ΄ κ½ μ°¨ μμΌλ©°, λ§μ§λ§ λ 벨μ λ Έλλ μΌμͺ½λΆν° μ°¨λ‘λλ‘ μ±μμ§ ννλ₯Ό λ§νλ€.
κ°μ₯ λ§μ΄ μ¬μ©λλ λ°©μμΌλ‘, μ°μ μμ ν λλ ν νμμλ μ΄μ κ°μ ννλ₯Ό μ μ§ν΄μΌλ§ νλ€.
μμ μ΄μ§ νΈλ¦¬λ λ€μκ³Ό κ°μ νΉμ§λ€μ΄ μ‘΄μ¬νλ€.
μμ μ΄μ§ νΈλ¦¬λ κ° μΈ΅λ³λ‘ μ΅λ 2^λ 벨
λ§νΌμ λ
Έλλ₯Ό κ°κ³ μλ€.
2^0 = 1κ°
2^3 = 8κ°
κ·Έλ¬λ―λ‘ λμ΄κ° 3μΈ μμ μ΄μ§ νΈλ¦¬λ μ΅λ 1 + 2 + 4 + 8 = 15κ°
μ λ
Έλλ₯Ό κ°μ§ μ μλ€.
μ΄μ λΉμ·ν λ°©μμΌλ‘ μ΅μ λ
Έλ λν ꡬν μ μλ€.
μ΅μ λ
Έλλ₯Ό κ°μ§κΈ° μν΄μλ, λ§μ§λ§ λ 벨μμ λ
Έλλ₯Ό 1κ°λ§ κ°μ ΈμΌ νλ€.
2^0 + 1 = 2κ°
2^0 + 2^1 + 1 = 4κ°
2^0+ 2^1 + 2^2 + 1 = 8κ°
μ΄λ₯Ό ν΅ν΄μ λμ΄κ° 3μΈ μμ μ΄μ§ νΈλ¦¬μ λ
Έλ κ°μ λ²μλ 2^3
μΈ 8
λΆν° 2^4 - 1
15
κΉμ§μΈ κ²μ μ μ μλ€.
μ΄λ μ 체 λ
Έλ κ°μμ log2()
λ₯Ό μμ΄ νμ κ·Έλ³΄λ€ μμ μ μ μ€ κ°μ₯ ν° κ°μλ ν΄λΉνλ€.
π python
μμλ int(math.log2(15))
μ΄μ κ°μ΄ 3
μ ꡬν μ μλ€.
π λμ΄κ° 4μΈ μμ μ΄μ§ νΈλ¦¬μ μ 체 λ
Έλ κ°μ λ²μλ?: 2^4
μΈ 16κ°
~ 2^5 - 1
μΈ 31κ°
π μ΄λ€ μμ μ΄μ§ νΈλ¦¬μ μ 체 λ
Έλ κ°μκ° 64κ°λΌλ©΄, μ΄ νΈλ¦¬μ λμ΄λ λͺμΈκ°?: log2(64) = 6
μ΄λ―λ‘ λμ΄λ 6
리ν λ
Έλμ κ°μλ₯Ό ꡬν νμ, log2()
λ₯Ό μμ΄ ν μ¬λ¦Όνλ©΄ λμ΄λ₯Ό ꡬν μ μλ€.
λμ΄κ° 2μΈ κ²½μ°μ λͺ¨λ λ Έλκ° κ½ μ°¨μλ€λ©΄, 리ν λ Έλλ 4κ°κ° μ‘΄μ¬ν κ²μ΄λ€.
μ¬κΈ°μ κ°μ₯ μΌμͺ½μ λ Έλμμ μμ λ Έλκ° 2κ° μκΈ΄λ€κ³ κ°μ νλ©΄, 리ν λ Έλλ λ 벨2μμ 3κ°, λ 벨3μμ 2κ°κ° μ‘΄μ¬ν΄ μ΄ 5κ°κ° λλ€.
math.ceil(math.log2(5))
μ 3μ΄λ―λ‘ λ¦¬ν λ
Έλλ₯Ό ν΅ν΄ λμ΄κ° 3μΈ κ²μ μ μ μλ€.
νμ§λ§ μ΄ λ°©λ²μ νΈλ¦¬κ° μ μ΄μ§ νΈλ¦¬μ ννμΈ κ²½μ°μλ§ κ°λ₯νλ€.
π λ§μ½ μμ κ°μ νΈλ¦¬μμ μμ λ Έλκ° 1κ°λ§ μμ±λλ€λ©΄, 리ν λ Έλλ κ·Έλλ‘ 4κ°κ° μ‘΄μ¬νκ² λλ―λ‘ λμ΄μ λ³νκ° μκΈ°μ§ μκΈ° λλ¬Έμ΄λ€.
μΌμͺ½ μμ λ
Έλ μΈλ±μ€ = λΆλͺ¨ λ
Έλμ μΈλ±μ€ X 2
μ€λ₯Έμͺ½ μμ λ
Έλ μΈλ±μ€ = λΆλͺ¨ λ
Έλμ μΈλ±μ€ X 2 + 1
μ νΈλ¦¬λ₯Ό 리μ€νΈλ‘ λνλ΄λ©΄, [None,10,5,15,1,7,12,20]
μ΄ λλ€.
index 2
μ ν΄λΉνλ 5
λ 1
κ³Ό 7
μ μμ λ
Έλλ‘ κ°λλ°, μ΄λ index 4
μ index 5
μ ν΄λΉνλ€.π μμ 곡μμ΄ μ±λ¦½ν¨μ μ μ μλ€.
λΆλͺ¨ λ
Έλ μΈλ±μ€ = μμ λ
Έλ μΈλ±μ€ // 2
index 4
μ μμΉν 1
κ³Ό index 5
μ μμΉν 7
μ λΆλͺ¨ λ
ΈλμΈ, 5
λ index 2
μ μμΉν΄μλ€.π μμ 곡μμ΄ μ±λ¦½ν¨μ μ μ μλ€.