์ด์งํธ๋ฆฌ๋ ๋ฐฐ์ด๊ณผ Node๋ฅผ ์ฌ์ฉํ์ฌ ํํํ ์ ์์ต๋๋ค. ์ฐ์ ๋ฐฐ์ด์ ์ฌ์ฉํ ํํ๋ฐฉ๋ฒ๋ถํฐ ์์๋ณด๊ฒ ์ต๋๋ค. ๋ฐฐ์ด์ ์ฌ์ฉํ ์ด์งํธ๋ฆฌ์ ํํ ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ์ด์งํธ๋ฆฌ๋ฅผ ๊ตฌํํ ๋ชจ์ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์กฐ๊ธ ์ดํด๋ณด๋ฉด ํน์ง์ด ๋ณด์ด์คํ
๋ฐ ๋
ธ๋์ ๋ฒํธ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ์ด๋ ํ ๊ด๊ณ๊ฐ ์กด์ฌํฉ๋๋ค. ๋
ธ๋ ๋ฒํธ์ ๋ฐฐ์ด ์ธ๋ฑ์ค์ ๊ด๊ณ ๋ฐฐ์ด์ ์ฒซ ์ธ๋ฑ์ค์ธ 0์ ์ฌ์ฉํ์ง ์๊ณ , ๋ฃจํธ ๋
ธ๋์ ์ธ๋ฑ์ค๋ฅผ 1๋ก ์ค์ ํ๊ฒ ์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ i์ธ ๋
ธ๋ N์ ๋ํ์ฌ ๋ค์ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝํฉ๋๋ค. N์ ๋ถ๋ชจ ๋
ธ๋์ ์ธ๋ฑ์ค๋ [N/2] ์
๋๋ค. (i๊ฐ 1์ธ ๊ฒฝ์ฐ ๋ฃจํธ ๋
ธ๋์ด๋ฏ๋ก ๋ถ๋ชจ๋
ธ๋๋ ์กด์ฌํ์ง ์์ต๋๋ค.) N์ ์ผ์ชฝ ์์์ 2 x i์ ์กด์ฌํฉ๋๋ค. (2 x i๊ฐ ๋
ธ๋์ ๊ฐ์๋ณด๋ค ํฌ๋ค๋ฉด ์ผ์ชฝ ์์์ด ์กด์ฌํ์ง ์์ต๋๋ค.) N์ ..
๐ฅ Computer Science/์๋ฃ๊ตฌ์กฐ
ํธ๋ฆฌ์ ํ์(์ํ) ํธ๋ฆฌ๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ด 4๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. 1. ์ค์ ํ์ (Inorder traversal) 2. ์ ์ ํ์ (Preorder traversal) 3. ํ์ ํ์ (Postorder traversal) 4. ๋ ๋ฒจ ์์ ํ์ (Level order traversal) ์ด๋ ์ ์, ์ค์, ํ์ ํ์์ ๊ธฐ์ค์ ๋ฃจํธ(Root)๋
ธ๋ ์
๋๋ค. ์ค์ ํ์(Inorder Traversal) ๋ค์๊ณผ ๊ฐ์ ์์๋ก ํ์ํฉ๋๋ค. 1. ์ผ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ค์ ํ์ํ์ฌ ๋ชจ๋ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค. 2. ๋ฃจํธ๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค. 3. ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ค์ ํ์ํ์ฌ ๋ชจ๋ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธํฉ๋๋ค. ์ฆ ๋ฃจํธ๊ฐ ํ์ ์์์ ์ค๊ฐ์ ์์นํฉ๋๋ค. ์ ์ ํ์(Preorder Traversal)..
์ด์งํธ๋ฆฌ (Binary Tree) ์ด์งํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ฉ๋๋ค. ๋น์ด์๊ฑฐ๋(๋
ธ๋๊ฐ 0๊ฐ), ํน์ ๋ฃจํธ(Root)์ ๋๊ฐ์ ์๋ก ๊ฒน์น์ง ์๋ ์ด์ง ํธ๋ฆฌ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ๊ฐ ์ผ์ชฝ ์๋ธํธ๋ฆฌ(left subtree)์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ(right subtree)๋ผ ํฉ๋๋ค. ์ด๋ก ์ ์ธ ์ธก๋ฉด์์ ๋
ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ ํธ๋ฆฌ๋ ๋
ธ๋๊ฐ ํ๋ ์ด์ ์กด์ฌํด์ผ ํ๋ฏ๋ก ํธ๋ฆฌ๊ฐ ์๋์ง๋ง, ์ด์งํธ๋ฆฌ๋ ๋น์ด์์ ์ ์์ผ๋ฏ๋ก ์ด์งํธ๋ฆฌ๋ ๋ง์ต๋๋ค. ์ด์งํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ์๊ฒผ์ต๋๋ค. ํธ๋ฆฌ์ ์ด์งํธ๋ฆฌ์ ์ฐจ์ด์ 1. ๋
ธ๋์ ์ต์ ๊ฐ์ ํธ๋ฆฌ๋ ๋
ธ๋๊ฐ ํ๋ ์ด์์ด์ด์ผ ํ์ง๋ง ์ด์งํธ๋ฆฌ๋ ๋
ธ๋๊ฐ 0๊ฐ์ฌ๋ ๋ฉ๋๋ค. 2. ์๋ธํธ๋ฆฌ์ ์์ ํธ๋ฆฌ์ ์๋ธํธ๋ฆฌ์๋ ์์๋, ์์น๋ ์กด์ฌํ์ง ์์ต๋๋ค. ์ด์งํธ๋ฆฌ์ ์๋ธํธ๋ฆฌ์๋ ์์น์ ์์๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค..
ํธ๋ฆฌ์ ํํ ํธ๋ฆฌ์๋ ์ฌ๋ฌ ์ข
๋ฅ๊ฐ ์์ผ๋, ํธ๋ฆฌ์ ์ข
๋ฅ์ ์๊ด์์ด ๋ชจ๋ ํธ๋ฆฌ๋ฅผ ํํํ ์ ์๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ ํํ ๊ฐ๋ณ๊ธธ์ด์ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ์ฌ ํธ๋ฆฌ๋ฅผ ํํํ ์ ์์ต๋๋ค. ์๋ฐ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. public class ListTree { private E element; private List subTrees; } Left Child - Right Sibling (์ผ์ชฝ ์์ - ์ค๋ฅธ์ชฝ ํ์ ) ํํ ๋
ธ๋์ ์ผ์ชฝ์๋ ์์ ๋
ธ๋, ํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ์์๋ ํ์ ๋
ธ๋๋ฅผ ๊ฐ์ง๊ฒ ํจ์ผ๋ก์จ, ๊ณ ์ ๊ธธ์ด์ ๋
ธ๋๋ฅผ ํตํด ํํ ๊ฐ๋ฅํฉ๋๋ค. public class TreeNode { private E element; private TreeNode leftChild; private Tre..
ํธ๋ฆฌ์ ์ ์์ ํธ๋ฆฌ์์ ์ฌ์ฉ๋๋ ์ฉ์ด๋ค์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ํธ๋ฆฌ(Tree) ํธ๋ฆฌ๋ ๋๋ฌด์ ๊ฐ์ง์ ๊ฐ์ ํํ์ ์๋ฃ๊ตฌ์กฐ์
๋๋ค. ํธ๋ฆฌ๋ ๋
ธ๋(Node)๋ก ๊ตฌ์ฑ๋๋ ์ ํ์งํฉ์ผ๋ก, ๋ค์์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํฉ๋๋ค. 1. ๋ฃจํธ๋ผ ๋ถ๋ฆฌ๋ ํน๋ณํ ๋
ธ๋๊ฐ ํ๋ ์กด์ฌํฉ๋๋ค. 2. ๋ฃจํธ๊ฐ ์๋ ๋๋จธ์ง ๋
ธ๋๋ค์ n๊ฐ์ ๋
ธ๋๊ฐ ์๋ก ์ค๋ณต๋์ง ์๋(disjoint) ์งํฉ T1, ..., Tn์ผ๋ก ๋๋์ด์ง๋ฉฐ, ๊ฐ๊ฐ์ ๋
ธ๋ ์งํฉ์ ๋ค์ ํธ๋ฆฌ์
๋๋ค. ์ด๋ ์ด๋ฌํ ํธ๋ฆฌ๋ฅผ ๋ฃจํธ์ ์๋ธํธ๋ฆฌ(subtree)๋ผ ์ ์ํฉ๋๋ค. ์์ ๊ฐ์ด ๋ฃจํธ ๋
ธ๋๋ก๋ถํฐ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ๋
ธ๋๋ค์ ๋ค์ ๊ฐ๊ฐ์ด ํธ๋ฆฌ๊ฐ ๋๋ฉฐ, ์ด๋ ์ฌ๊ท์ ์ผ๋ก ๊ณ์๋ฉ๋๋ค. ํธ๋ฆฌ์ ์ฉ์ด ๋
ธ๋ (Node) ์์(element)์ ๋ค๋ฅธ ๋
ธ๋๋ก์ ๊ฐ์ (ํน์ ๊ฐ์ง - egde, branch)์ผ..
๋ฐฐ์ด๋ก ๊ตฌํํ Queue์ ๋ฌธ์ ์ Queue๋ ๋ฐฐ์ด๋ก ๊ตฌํํ์์ ๋, ์ฝ์
๊ณผ ์ญ์ ๋ฅผ ์ฌ๋ฌ๋ฒ ์งํํ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์์น๊ฐ ์ ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค. ์ฆ ์ด๋ ๊ฒ ๊ตฌํํ๊ฒ ๋๋ค๋ฉด, ๋ถ๊ฒ ํ์๋ ๋ฐฐ์ด์ ๋น ๊ณต๊ฐ์ ์ฌ์ฉ๋์ง ์์ง๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ์ ์ฐจ์งํจ์ผ๋ก, ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๋ฐ์์ํต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก Circular Queue๋ฅผ ์ฌ์ฉํฉ๋๋ค. Circular Array Queue ๊ธฐ์กด์ Queue์ ๋๋ถ๋ถ ๋น์ทํ์ง๋ง, ๋ฐฐ์ด์ ๋์ด ๋ฐฐ์ด์ ์ฒ์๊ณผ ๋ถ์ด ์๋ ๊ฒ์ผ๋ก ์๊ฐํฉ๋๋ค. ์ฆ ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ง ํํ๋ฅผ ์๊ฐํ์๋ฉด ์ดํดํ๊ธฐ ์ข์ต๋๋ค. Circular Queue์ ์ฝ์
๊ณผ ์ญ์ ์ฆ ์์ ๊ฐ์ด Circular Queue๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด์ ๋ชจ๋ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐฐ์ด๋ก ๊ตฌํํ Circ..
ํ(Queue) Queue ๋ผ๋ ๋จ์ด๋ ๋๊ธฐ์ค ํน์ ์ค์ ์์ ๊ธฐ๋ค๋ฆฌ๋ค ๋ผ๋ ์๋ฏธ์ ๋จ์ด๋ก ๋จ์ด์ ๋ป์ธ ์ค์ ๋ํด ์๊ฐํด ๋ณด๋ฉด ๋จผ์ ์ค์ ์ ์ฌ๋์ด ๋จผ์ ์๋น์ค๋ฅผ ๋ฐ์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก Queue์์๋ ๋จผ์ ๋ค์ด์จ ์๋ฃ๊ฐ ๋จผ์ ๋น ์ ธ๋๊ฐ๋ ์ ์
์ ์ถ(First In First Out)์ด๋ผ๋ ํน์ฑ์ ๊ฐ์ง๋๋ค. Offer๊ณผ Poll ๋์ Enqueue์ Dequeue ๋ฑ์ผ๋ก๋ ํํ๋ฉ๋๋ค. ํ์ ํน์ง ์ ํด์ง ํ ๊ณณ์ ํตํด์ ์ฝ์
๊ณผ ์ญ์ ๊ฐ ์ด๋ฃจ์ด์ง๋ ์คํ๊ณผ๋ ๋ฌ๋ฆฌ ํ์ ์ฝ์
๊ณผ ์ญ์ ๋ ์ ๋์์ ์ด๋ฃจ์ด์ง๋๋ค. ์๋ก์ด ์์์ ์ฝ์
์ ํญ์ ํ์ ๋ค์ชฝ์์, ์์์ ์ญ์ ๋ ํ์ ์์ชฝ์์ ์ด๋ฃจ์ด์ง๋ฉฐ ํ๋ก ํธ์ ๋ฆฌ์ด๋ผ๋ ์ฉ์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค. ํ๋ก ํธ(front) : ํ์ ์ญ์ ์ฐ์ฐ์ด ์ด๋ฃจ์ด์ง๋ ๊ณณ ๋ฆฌ์ด(rear) : ํ์ ..
์คํ(Stack) Stack์ด๋ผ๋ ๋จ์ด๋ ๋๋ฏธ ํน์ ์๋ค ๋ผ๋ ์๋ฏธ์ ๋จ์ด๋ก, ๋จ์ด์ ๋ป ๊ทธ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์์ ์ฌ๋ฆฐ ํํ์ ์๋ฃ๊ตฌ์กฐ์
๋๋ค. ํ๋ง๊ธ์ค ํต์ ์๊ฐํ๋ฉด ํธํ๋ฐ, ํ๋ง๊ธ์ค ํต ์์ ๋ค์ด์๋ ๊ณผ์๋ค์ ์ฐจ๊ณก์ฐจ๊ณก ์์ฌ์์ผ๋ฉฐ ๊ณผ์๋ฅผ ์ง์ด๋จน์ ๋ ๋งจ ์์์๋ถํฐ ์ง์ด๋จน๊ฒ ๋ฉ๋๋ค. Stack์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋งจ ์์ ๋ค์ด์๋, ์ฆ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ค์ด์จ ์๋ฃ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋น ์ ธ๋๊ฐ๋ ํ์
์ ์ถ(Last In First Out, LIFO)์ด๋ผ๋ ํน์ฑ์ ๊ฐ์ง๋๋ค. ์คํ์ ํน์ง ์คํ์ ์๋ฃ๋ฅผ ์ ํด์ง ๋ฐฉํฅ์ผ๋ก๋ง ์์ ์ ์๊ณ Top์ผ๋ก ์ ํ ๊ณณ์ ํตํด์๋ง ์คํ์ ์ฝ์
๊ณผ ์ญ์ ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค. ์ฆ ์คํ์ ์
๊ตฌ์ ์ถ๊ตฌ๊ฐ ๋จ ํ๋์
๋๋ค. ์คํ์ ์ฌ์ฉ ์ฌ๋ก ์น ๋ธ๋ผ์ฐ์ ์ ๋ฐฉ๋ฌธ History ๊ด๋ฆฌ ํ์ ํ๊ธฐ๋ฒ ๊ณ์ฐ ์ปดํ์ผ๋ฌ์ ์ธํฐ..