728x90 ๋ฐ์ํ tree5 [Data Structure] B-Tree๋? ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ค๋์ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ ์ค ๊ท ํ ๋ํ์ (์ด๋ฆ ์์ฒด๊ฐ Balanced - Tree)์ธ B-Tree์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ B-Tree์ ๋ฐฐ๊ฒฝ B-ํธ๋ฆฌ(B-tree)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ผ ์์คํ ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ์ผ์ข ์ผ๋ก, ์ด์ง ํธ๋ฆฌ๋ฅผ ํ์ฅํด ํ๋์ ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ ์์ ๋ ธ๋์ ์ต๋ ์ซ์๊ฐ 2๋ณด๋ค ํฐ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค. - ์ํค ๋ฐฑ๊ณผ - ์ฆ, ์ด์ง ํธ๋ฆฌ๋ฅผ ์กฐ๊ธ ๋ ํจ์จ์ ์ผ๋ก ํ์ฅํ ์๋ฃ๊ตฌ์กฐ์์! ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ต์ ์ ๊ฒฝ์ฐ O(n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ์กฐ๊ธ ๋ ํจ์จ์ ์ผ๋ก ๋ง๋ ๊ฒ์ด O(logn)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ AVL ํธ๋ฆฌ์์ต๋๋ค. ํ์ง๋ง ๋ง์ฝ 2์ฒ๋ง๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด log20,000,000 = 24 ์ฆ, ์ต๋ 2.. 2021. 12. 6. [Data Structure] AVL ํธ๋ฆฌ ๊ตฌํํด๋ณด๊ธฐ (feat. Swift) ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ ๋ฒ ์๊ฐ์ AVL ํธ๋ฆฌ๊ฐ ๋ญ์ง ์ด๋ก ์ ๋ํด ์์๋ณด์๋๋ฐ์. (ํน์ ์๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ํ์ธํด์ฃผ์ธ์!) ์ค๋์ AVL ํธ๋ฆฌ๋ฅผ ์ง์ ๊ตฌํํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ AVLNode ๊ธฐ๋ณธ์ ์ผ๋ก ์ด์งํ์ํธ๋ฆฌ์ ๋ ธ๋์ ๋๊ฐ์ง๋ง ์ผ์ชฝ๊ณผ,์ค๋ฅธ์ชฝ ์์์ ๋์ด์ ๋ฐธ๋ฐ์ค ํฉํฐ๋ฅผ ์ธก์ ํ ๋ณ์๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์์ต๋๋ค. class AVLNode { var value:T var leftChild:AVLNode? var rightChild:AVLNode? var height:Int = 0 var leftHeight:Int { return leftChild?.height ?? -1 } var rightHeight:Int { return rightChild?.height ?? -1 } var.. 2021. 12. 6. [Data Structure] AVL(Adelson-Velsky and Landis) ํธ๋ฆฌ๋? ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ค๋์ ์ ๋ฒ์ ์ ๋ฆฌํ๋ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๋ ์ ๊ทธ๋ ์ด๋(?)ํ ์๋ฃ๊ตฌ์กฐ์ธ AVL ํธ๋ฆฌ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. (ํน์ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ํด ๋ชจ๋ฅด์๋ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ๋ณด๊ณ ์์ฃผ์ธ์!) ๋ฐ๋ก ์์ํ ๊ฒ์~ AVL(Adelson-Velsky and Landis) ํธ๋ฆฌ๋? ๐ค ์ปดํจํฐ ๊ณผํ์์ AVL ํธ๋ฆฌ(๋ฐ๋ช ์์ ์ด๋ฆ์ธ Adelson-Velsky and Landis์์ ๋ฐ์จ ์ด๋ฆ)๋ ์ค์ค๋ก ๊ท ํ์ ์ก๋ ์ด์ง ํ์ ํธ๋ฆฌ์ด๋ค. ์ค์ค๋ก ๊ท ํ์ ์ก๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ์ฒ์์ผ๋ก ๋ฐ๋ช ๋์๋ค. AVL ํธ๋ฆฌ์์, ๋ ์์ ์๋ธํธ๋ฆฌ์ ๋์ด๋ ํญ์ ์ต๋ 1๋งํผ ์ฐจ์ด๋๋ค. ๋ง์ฝ ์ด๋ค ์์ ์์ ๋์ด ์ฐจ์ด๊ฐ 1๋ณด๋ค ์ปค์ง๋ฉด ์ด ์์ฑ์ ์ ์งํ๊ธฐ ์ํด์ ์ค์ค๋ก ๊ท ํ์ ์ก๋๋ค. - ์ํค ๋ฐฑ๊ณผ - ์ฆ, .. 2021. 12. 1. [Data Structure] ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree) ๊ตฌํํด๋ณด๊ธฐ (feat.Swift) ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ ๋ฒ ์๊ฐ์ ์ด์ง ํ์ ํธ๋ฆฌ๊ฐ ๋ญ์ง ์ด๋ก ์ ๋ํด ์์๋ณด์๋๋ฐ์. ์ค๋์ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ์ง์ ๊ตฌํํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ BSTNode ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ ธ๋๋ฅผ ๋ง๋ค์ด ์ฃผ๊ฒ ์ต๋๋ค. ๋ ธ๋๋ ๊ฐ,์ผ์ชฝ,์ค๋ฅธ์ชฝ ์์์ ๋ ธ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. class BSTNode { var value:T var leftChild:BSTNode? var rightChild:BSTNode? init(value:T) { self.value = value } } Binary Search Tree ์ด์ง ํ์ ํธ๋ฆฌ์ ์ต์๋จ ๊ฐ์ ๊ฐ์ง root๋ฅผ ํ๋กํผํฐ๋ก ์ ์ํ์ต๋๋ค. struct BinarySearchTree { var root:BSTNode? Insert public mutatin.. 2021. 11. 18. [Data Structure] ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)๋? ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ค๋์ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ ์ค ํจ์จ์ ์ธ ๊ฒ์,์ฝ์ ,์ญ์ ๋ฅผ ํ ์ ์๋ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ ์ด์ง ํธ๋ฆฌ(Binary Tree)๋? ๐ค ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ด์ง ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ ๋จผ์ ์ด์ง ํธ๋ฆฌ๊ฐ ๋ญ์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ์ด์ง ํธ๋ฆฌ๋ ๊ฐ๊ฐ์ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ ํธ๋ฆฌ ์๋ฃ ๊ตฌ์กฐ๋ก, ์์ ๋ ธ๋๋ฅผ ๊ฐ๊ฐ ์ผ์ชฝ ์์ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ผ๊ณ ํ๋ค.... - ์ํค ๋ฐฑ๊ณผ - ์ฆ, ๋ ธ๋๋ง๋ค ์์์ด 2๊ฐ ์ดํ์ธ ํธ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค. ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์ด๋ฃจ์ด์ง ํธ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค. (์์์ด ์์ด๋ ๋๊ณ , ํ๋์ฌ๋ ๋๊ณ , ๋ ๊ฐ์ฌ๋ ๋ฉ๋๋ค.) ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)๋? ๐ง ์ด์ง ํ์ ํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ์.. 2021. 11. 17. ์ด์ 1 ๋ค์ 728x90 ๋ฐ์ํ