deo2kim
๋งž์™œํ‹€
deo2kim
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • ๊ฐœ๋ฐœ
    • Infra

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
deo2kim

๋งž์™œํ‹€

[python] ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (binary Search tree) - 1. ํด๋ž˜์Šค ์ •์˜, ์ดˆ๊ธฐํ™”, ๋…ธ๋“œ ์ถ”๊ฐ€
CS/Data Structure

[python] ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (binary Search tree) - 1. ํด๋ž˜์Šค ์ •์˜, ์ดˆ๊ธฐํ™”, ๋…ธ๋“œ ์ถ”๊ฐ€

2020. 9. 2. 20:13
๋ฐ˜์‘ํ˜•

๐Ÿ“— ์ด์ง„ ํŠธ๋ฆฌ (binary Search tree)

 

๐Ÿ”ต ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ํด๋ž˜์Šค ์ •์˜ ๋ฐ ์ดˆ๊ธฐํ™”

 

 ๋จผ์ €  Node  ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•ด ๋ณด์ž.   Node  ํด๋ž˜์Šค๋Š” ๋…ธ๋“œ๊ฐ’์ธ  self.val  ์™€ ์™ผ์ชฝ ๋…ธ๋“œ  self.left  ์˜ค๋ฅธ์ชฝ  ๋…ธ๋“œ   self.right  ์˜ ์†์„ฑ์„ ๊ฐ€์ง„๋‹ค. ์ดˆ๊ธฐํ™” ์‹œ Node๊ฐ’๋งŒ ์ฃผ์–ด์ง€๊ณ  ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๋Š” ๋น„์–ด์žˆ๋‹ค.

 

- ๋…ธ๋“œ ๊ตฌ์„ฑ

# ๋…ธ๋“œ ๋งŒ๋“ค๊ธฐ
#       A(val)
#      /      \
# B(left)     C(right)

class Node:
    def __init__(self, item):
        self.val = item
        self.left = None
        self.right = None

 

 Node  ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด,  BinaryTree  ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž. ์ฒ˜์Œ์—๋Š” Node์˜ ๊ฐ’์ด ์—†๋Š”, ๋…ธ๋“œ ํ•˜๋‚˜๋ฅผ ๊ฐ€์ง„ ํŠธ๋ฆฌ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

- ํŠธ๋ฆฌ ๊ตฌ์„ฑ

 

class BinaryTree:
    # ์ดˆ๊ธฐ๊ฐ’ head๋Š” None
    def __init__(self):
        self.head = Node(None)

        self.preorder_list=[]
        self.inorder_list=[]
        self.postorder_list=[]
        

 

์ด์ œ ์—ฌ๊ธฐ์— ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ, ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ”ต ์ถ”๊ฐ€ / add

 

 ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค.  item  ๊ฐ’์„ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ ๋…ธ๋“œ์˜ ๊ฐ’์ด  None  ์ด๋ผ๋ฉด ๋…ธ๋“œ์˜ ๊ฐ’์„  item  ์œผ๋กœ ํ•œ๋‹ค. ๋…ธ๋“œ์˜ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ๋Œ€์†Œ ๋น„๊ต๋ฅผ ํ†ตํ•ด ๋…ธ๋“œ์˜ ์™ผ์ชฝ์œผ๋กœ ๊ฐˆ ๊ฒƒ์ธ์ง€, ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋ฉฐ, ์žฌ๊ท€์ ์œผ๋กœ ๋์— ๋„๋‹ฌํ•˜์—ฌ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค.

class BinaryTree:
    # ์ดˆ๊ธฐ๊ฐ’ head๋Š” None
    def __init__(self):...

    # ๊ฐ’ ์ถ”๊ฐ€ํ•˜๊ธฐ head๊ฐ€ ์—†์„ ๊ฒฝ์šฐ
    def add(self, item):
        if self.head.val is None:
            self.head.val = item

        # head๊ฐ€ ์žˆ์œผ๋ฉด ์™ผ์ชฝ๋ฐฐ์น˜ or ์˜ค๋ฅธ์ชฝ๋ฐฐ์น˜
        else:
            self.__add_node(self.head, item)

    # head๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
    def __add_node(self, cur, item):
        print('๋ถ€๋ชจ:', cur.val, '์ž์‹:', item)
        # head ๊ฐ’์ด ํฌ๋ฉด ์™ผ์ชฝ์œผ๋กœ
        if cur.val >= item:
            if cur.left is not None:
                self.__add_node(cur.left, item)
            else:
                cur.left = Node(item)
        # head ๊ฐ’์ด ์ž‘์œผ๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ
        else:
            if cur.right is not None:
                self.__add_node(cur.right, item)
            else:
                cur.right = Node(item)

 

 

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'CS > Data Structure' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์Šคํƒ(Stack)  (0) 2020.11.04
[python] ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (binary Search tree) - 4. ์‚ญ์ œ  (0) 2020.09.05
[python] ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (binary Search tree) - 3. ์ˆœํšŒ  (0) 2020.09.04
[python] ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (binary Search tree) - 2. ํƒ์ƒ‰  (0) 2020.09.03
[python] ์ด์ง„ ํŠธ๋ฆฌ (binary tree) - ๊ฐœ๋… ์ •๋ฆฌ  (0) 2020.09.01
    'CS/Data Structure' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [python] ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (binary Search tree) - 4. ์‚ญ์ œ
    • [python] ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (binary Search tree) - 3. ์ˆœํšŒ
    • [python] ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (binary Search tree) - 2. ํƒ์ƒ‰
    • [python] ์ด์ง„ ํŠธ๋ฆฌ (binary tree) - ๊ฐœ๋… ์ •๋ฆฌ
    deo2kim
    deo2kim
    ์ฝ”๋”ฉ ๊ธฐ๋กํ•˜๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”