์ด์งํธ๋ฆฌ๋ ๋ฐฐ์ด๊ณผ Node๋ฅผ ์ฌ์ฉํ์ฌ ํํํ ์ ์์ต๋๋ค.
์ฐ์ ๋ฐฐ์ด์ ์ฌ์ฉํ ํํ๋ฐฉ๋ฒ๋ถํฐ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฐฐ์ด์ ์ฌ์ฉํ ์ด์งํธ๋ฆฌ์ ํํ
๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ์ด์งํธ๋ฆฌ๋ฅผ ๊ตฌํํ ๋ชจ์ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์กฐ๊ธ ์ดํด๋ณด๋ฉด ํน์ง์ด ๋ณด์ด์คํ ๋ฐ ๋ ธ๋์ ๋ฒํธ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ์ด๋ ํ ๊ด๊ณ๊ฐ ์กด์ฌํฉ๋๋ค.
๋ ธ๋ ๋ฒํธ์ ๋ฐฐ์ด ์ธ๋ฑ์ค์ ๊ด๊ณ
๋ฐฐ์ด์ ์ฒซ ์ธ๋ฑ์ค์ธ 0์ ์ฌ์ฉํ์ง ์๊ณ , ๋ฃจํธ ๋ ธ๋์ ์ธ๋ฑ์ค๋ฅผ 1๋ก ์ค์ ํ๊ฒ ์ต๋๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ i์ธ ๋ ธ๋ N์ ๋ํ์ฌ ๋ค์ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝํฉ๋๋ค.
N์ ๋ถ๋ชจ ๋ ธ๋์ ์ธ๋ฑ์ค๋ [N/2] ์ ๋๋ค. (i๊ฐ 1์ธ ๊ฒฝ์ฐ ๋ฃจํธ ๋ ธ๋์ด๋ฏ๋ก ๋ถ๋ชจ๋ ธ๋๋ ์กด์ฌํ์ง ์์ต๋๋ค.)
N์ ์ผ์ชฝ ์์์ 2 x i์ ์กด์ฌํฉ๋๋ค. (2 x i๊ฐ ๋ ธ๋์ ๊ฐ์๋ณด๋ค ํฌ๋ค๋ฉด ์ผ์ชฝ ์์์ด ์กด์ฌํ์ง ์์ต๋๋ค.)
N์ ์ค๋ฅธ์ชฝ ์์์ 2 x i + 1์ ์กด์ฌํฉ๋๋ค. (2 x i + 1์ด ๋ ธ๋์ ๊ฐ์๋ณด๋ค ํฌ๋ค๋ฉด ์ค๋ฅธ์ชฝ ์์์ด ์กด์ฌํ์ง ์์ต๋๋ค.)
์์ ์ด์งํธ๋ฆฌ์ ๊น์ด
๋ ธ๋์ ๊ฐ์๊ฐ n๊ฐ์ธ ์์ ์ด์งํธ๋ฆฌ์ ๊น์ด(๋์ด)๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$[log_{2}n] + 1$$
์ฆ ๋ ธ๋์ ๊ฐ์๊ฐ 9๊ฐ์ธ ๊ฒฝ์ฐ, ์์ ์ด์งํธ๋ฆฌ์ ๊น์ด๋ 4๊ฐ ๋ฉ๋๋ค.
๋ฐฐ์ด์ ์ด์ฉํ ํธ๋ฆฌ์ ํํ์ ์ฅ๋จ์
์ฅ์
- ๋ฐฐ์ด์ด๋ฏ๋ก ํน์ ์์์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ ๋งค์ฐ ๋น ๋ฆ ๋๋ค.
- ์์ ์ด์งํธ๋ฆฌ์ธ ๊ฒฝ์ฐ ๋ญ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์์ต๋๋ค.
๋จ์
- ์์ ์ด์งํธ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ๋ง์ ์ ์์ต๋๋ค.
- ์ญ์ ์ ์์น๋ฅผ ์ด๋ํด์ผ ํ ์์๊ฐ ๋ง์ ๊ฒฝ์ฐ ๋นํจ์จ์ ์ ๋๋ค.
์ฐ๊ฒฐ์ฒด์ธ(๋ ธ๋)์ ์ฌ์ฉํ ์ด์งํธ๋ฆฌ์ ํํ
์ฐ๊ฒฐ์ฒด์ธ์ผ๋ก ์ด์งํธ๋ฆฌ๋ฅผ ๊ตฌํํ๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋์ง ์์ต๋๋ค.
๋ํ ์๋ธํธ๋ฆฌ๋ฅผ ํต์งธ๋ก ๋ฐ๊ฟ ์ ์๊ธฐ์, ์ญ์ ์ ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋ ธ๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์์ต๋๋ค.
public class BinaryTree <T> {
private BinaryNode<T> root;
๋ ธ๋๋ ๋ค์๊ณผ ๊ฐ์ด leftChild์ rightChild ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
public class BinaryNode<T> {
private T element;
private BinaryNode<T> leftChild;
private BinaryNode<T> rightChild;
ํด๋น ๊ตฌ์กฐ๋ ์ผ๋ฐ ํธ๋ฆฌ์ ํํ์์ Left Child - Right Sibling์ ๊ตฌํ๊ณผ ๋งค์ฐ ๋น์ทํ๋ฉฐ, ์ค์ ๋ก ๋ณ์์ ์ด๋ฆ๋ง ๋ฐ๊พผ๋ค๋ฉด ๋์ผํ ๊ตฌ์กฐ์์ ์ ์ ์์ต๋๋ค.
public class TreeNode<E> {
private E element;
private TreeNode<E> leftChild;
private TreeNode<E> rightSibling;
์๋ฐ๋ก ๊ตฌํ
https://ttl-blog.tistory.com/703
'๐ฅ Computer Science > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] - ํ(Heap) (0) | 2022.06.06 |
---|---|
[์๋ฃ๊ตฌ์กฐ] - ์ด์ง ๊ฒ์ ํธ๋ฆฌ (Binary Search Tree - BST) (0) | 2022.06.05 |
[์๋ฃ๊ตฌ์กฐ] - ํธ๋ฆฌ(Tree)[4] - ํธ๋ฆฌ์ ํ์ (์ํ) (0) | 2022.06.05 |
[์๋ฃ๊ตฌ์กฐ] - ํธ๋ฆฌ(Tree)[3] - ์ด์ง ํธ๋ฆฌ(Binary Tree) (0) | 2022.06.05 |
[์๋ฃ๊ตฌ์กฐ] - ํธ๋ฆฌ(Tree)[2] - ํธ๋ฆฌ์ ํํ (0) | 2022.06.04 |