λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

자료ꡬ쑰 및 μ‹€μŠ΅ - [8] 트리 Tree μ‹€μŠ΅λ¬Έμ œ(파이썬으둜 μ„ μœ„μˆœνšŒ, ν›„μœ„μˆœνšŒ κ΅¬ν˜„) (3) μœ„ 트리λ₯Ό μ—°κ²°λ¦¬μŠ€νŠΈλ₯Ό μ΄μš©ν•΄μ„œ κ΅¬ν˜„ν•˜κ³ , μ£Όμ–΄μ§„ λ…Έλ“œμ— λŒ€ν•΄ μžμ‹ κ³Ό μ™Όμͺ½ μžμ‹, 우츑 μžμ‹μ˜ μš©λŸ‰μ„ μˆœμ„œλŒ€λ‘œ 좜λ ₯ν•˜μ‹œμ˜€. β€» 참고사항: μ‹€μŠ΅ 및 ν…ŒμŠ€νŠΈ μš©μ΄μ„±μ„ μœ„ν•΄ λ³Έ λ¬Έμ œμ—μ„œλŠ” κ³ μ •λœ 트리λ₯Ό μ‚¬μš©ν•˜μ§€λ§Œ, 일반적으둜 λ™μ μœΌλ‘œ μ‚½μž…, μ‚­μ œ κ°€λŠ₯ν•œ 트리λ₯Ό μ‚¬μš©ν•¨ 좜λ ₯ β—¦ μžμ‹ 및 λ…Έλ“œ 쑴재 여뢀에 따라 좜λ ₯ λ‚΄μš©μ΄ 달라짐 - ν•œμͺ½ μžμ‹λ§Œ μ‘΄μž¬ν•˜λŠ” 경우, μžμ‹ κ³Ό ν•΄λ‹Ή μžμ‹ λ…Έλ“œμ˜ μš©λŸ‰ 2개 κ°’λ§Œ 좜λ ₯ - μžμ‹ λ…Έλ“œκ°€ μ—†λŠ” 경우, μžμ‹ μ˜ μš©λŸ‰ 1개 κ°’λ§Œ 좜λ ₯ - μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ…Έλ“œλ²ˆν˜Έκ°€ μž…λ ₯λ˜λŠ” 경우 –1을 좜λ ₯ μœ„ λ¬Έμ œλŠ” 트리λ₯Ό μˆœνšŒν•˜λ©° ν•΄λ‹Ήν•˜λŠ” λ…Έλ“œλ₯Ό μ°Ύκ³ , 쑰건에 맞게 좜λ ₯ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν–ˆλ‹€. class Node: def __init__(self,data,L=None,R=None,parent=None..
자료ꡬ쑰 및 μ‹€μŠ΅ - [8] 트리 Tree (파이썬으둜 μ„ μœ„μˆœνšŒ, ν›„μœ„μˆœνšŒ κ΅¬ν˜„) (2) μ„ μœ„μˆœνšŒ μ„ μœ„μˆœνšŒλŠ” λ…Έλ“œλ₯Ό 자기 μžμ‹λ…Έλ“œλ³΄λ‹€ μ•žμ„œμ„œ λ°©λ¬Έν•˜λŠ” 방법이닀. μ΄λŠ” μž¬κ·€μ μœΌλ‘œ κ΅¬ν˜„ν•  수 μžˆλ‹€. ν›„μœ„μˆœνšŒ μ„ μœ„μˆœνšŒλŠ” λ…Έλ“œλ₯Ό 자기 μžμ‹λ…Έλ“œλ³΄λ‹€ λ‚˜μ€‘μ— λ°©λ¬Έν•˜λŠ” 방법이닀. μ΄λ˜ν•œ μž¬κ·€μ μœΌλ‘œ κ΅¬ν˜„ν•  수 μžˆλ‹€. 두가지 방법을 κ΅¬ν˜„ν•˜λŠ”λ° 차이점은 λ…Έλ“œλ₯Ό λ°©λ¬Έν•˜λŠ” 타이밍에 μžˆλ‹€. κ°„λ‹¨ν•˜κ²Œ μˆœμ„œλ§Œ λ°”κΏ”μ£Όλ©΄ κ΅¬ν˜„ν•  수 μžˆλ‹€. μ•„λž˜λŠ” 전체적인 트리 ADT의 λ©”μ„œλ“œμ— μ„ μœ„μˆœνšŒ, ν›„μœ„μˆœνšŒλ₯Ό 좔가해놓은 것이닀. class Node: def __init__(self,data,L=None,R=None,parent=None,num=None): self.data = data self.L = L self.R = R self.parent = parent self.num = num class tree: def __init__(s..
자료ꡬ쑰 및 μ‹€μŠ΅ - [8] 트리 Tree (파이썬으둜 트리 κ΅¬ν˜„) (1) 트리 ADT 트리 ADTλŠ” κ³„μΈ΅μ μœΌλ‘œ μ €μž₯된 데이터 μ›μ†Œλ“€μ„ λͺ¨λΈλ§ ν•œ 것이닀. μ•žμ„  데이터 ꡬ쑰듀과 차이점이라면 κ³„μΈ΅μ μ΄λΌλŠ” 점이닀. 맨 μœ„μ˜ μ›μ†Œλ₯Ό μ œμ™Έν•˜κ³ , 각 트리 μ›μ†ŒλŠ” λΆ€λͺ¨(parent) μ›μ†Œμ™€ 0개 μ΄μƒμ˜ μžμ‹(children) μ›μ†Œλ“€μ„ κ°€μ§„λ‹€. μ „μ œ: νŠΈλ¦¬λŠ” λΉ„μ–΄μžˆμ§€ μ•Šλ‹€ -> μ•Œκ³ λ¦¬μ¦˜ λ‹¨μˆœν™” 트리 μš©μ–΄ 루트(root): λΆ€λͺ¨κ°€ μ—†λŠ” λ…Έλ“œ(A) λ‚΄λΆ€λ…Έλ“œ(internal node): 적어도 ν•œ 개의 μžμ‹μ„ κ°€μ§„ λ…Έλ“œ(A, B, C, F) μ™ΈλΆ€λ…Έλ“œ(external node), λ˜λŠ” 리프 (leaf): μžμ‹μ΄ μ—†λŠ” λ…Έλ“œ(E, I, J, K, G, H, D) ν˜•μ œ(siblings): 같은 λΆ€λͺ¨λ₯Ό κ°€μ§„ λ…Έλ“œλ“€(G, H) λ…Έλ“œμ˜ 쑰상(ancestor): λΆ€λͺ¨(parent), μ‘°λΆ€λͺ¨(grandparen..
자료ꡬ쑰 및 μ‹€μŠ΅ - [7] 큐 Queue, 데크 Deque (파이썬으둜 큐,데크 κ΅¬ν˜„) (1) 큐 ADT 큐 ADTλŠ” μž„μ˜μ˜ κ°œμ²΄λ“€μ„ μ €μž₯ν•˜λŠ” ν•˜λ‚˜μ˜ μΆ”μƒμžλ£Œν˜•μ΄λ‹€. μ‚½μž…κ³Ό μ‚­μ œλŠ” μ„ μž…μ„ μΆœ (First In First Out, FIFO)μˆœμ„œλ₯Ό λ”°λ₯Έλ‹€. μ‚½μž…μ€ 큐의 λ’€(rear)μ—μ„œ, μ‚­μ œλŠ” 큐의 μ•ž(front)이라 λΆˆλ¦¬λŠ” μœ„μΉ˜μ—μ„œ μˆ˜ν–‰λœλ‹€. 큐 ADT λ©”μ„œλ“œ 큐의 λ©”μ„œλ“œλŠ” λ‹€μŒκ³Ό κ°™λ‹€. #μ£Όμš” 큐 λ©”μ„œλ“œ enqueue(element) : 큐의 뒀에 μ›μ†Œλ₯Ό μ‚½μž… element dequeue() : 큐의 μ•žμ—μ„œ μ›μ†Œλ₯Ό μ‚­μ œν•˜μ—¬ λ°˜ν™˜ #보쑰 큐 λ©”μ„œλ“œ element front() : 큐의 μ•žμ— μžˆλŠ” μ›μ†Œλ₯Ό (μ‚­μ œν•˜μ§€ μ•Šκ³ ) λ°˜ν™˜ integer size() : 큐에 μ €μž₯된 μ›μ†Œμ˜ 수λ₯Ό λ°˜ν™˜ boolean isEmpty() : 큐가 λΉ„μ–΄μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό λ°˜ν™˜ iterator elements() : 큐 μ›μ†Œ μ „..