Array Linked List Stack Queue Tree - accidentlywoo/legacyVue GitHub Wiki
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ์ธ Array ์๋ฃ๊ตฌ์กฐ๋, ๋ ผ๋ฆฌ์ ์ ์ฅ ์์์ ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์๊ฐ ์ผ์นํ๋ค. ๋ฐ๋ผ์ ์ธ๋ฑ์ค๋ก ํด๋น ์์์ ์ ๊ทผํ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐพ๊ณ ์ ํ๋ ์์์ ์ธ๋ฑ์ค ๊ฐ์ ์๊ณ ์์ผ๋ฉด Big-O(1)์ ํด๋น ์์๋ก ์ ๊ทผํ ์ ์๋ค. ์ฆ random access๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ญ์ ๋๋ ์ฝ์ ์ ๊ณผ์ ์์๋ ํด๋น ์์์ ์ ๊ทผํ์ฌ ์์ ์ ์๋ฃํ ๋ค <Big-O(1)>, ๋ ํ๊ฐ์ง์ ์์ ์ ์ถ๊ฐ์ ์ผ๋ก ํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์, ์๊ฐ์ด ๋ ๊ฑธ๋ฆฐ๋ค. ๋ง์ฝ ๋ฐฐ์ด์ ์์ ์ค ์ด๋ ์์๋ฅผ ์ญ์ ํ๋ค๊ณ ํ์ ๋, ๋ฐฐ์ด์ ์ฐ์์ ์ธ ํน์ง์ด ๊นจ์ง๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ญ์ ํ ์์๋ณด๋ค ํฐ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋ ์์๋ค์ shiftํด์ค์ผ ํ๋ cost๊ฐ ๋ฐ์ํ๋ค<Bifg-O(n)>.Array ์๋ฃ๊ตฌ์กฐ์์ ์ญ์ ๊ธฐ๋ฅ์ ๋ํ time complexity์ worst case๋ Big-O(n)์ด ๋๋ค. ์ฝ์ ์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ๋ง์ฝ ์ฒซ๋ฒ์งธ ์๋ฆฌ์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๊ณ ์ ํ๋ค๋ฉด ๋ชจ๋ ์์๋ค์ ์ธ๋ฑ์ค๋ฅผ 1์ฉ shiftํด์ค์ผ ํ๋ฏ๋ก ์ด ๊ฒฝ์ฐ๋ O(n)์ ์๊ฐ์ ์๊ตฌํ๊ฒ ๋๋ค.
์ด ๋ถ๋ถ์ ๋ํ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๊ฐ linked list์ด๋ค. ๊ฐ๊ฐ์ ์์๋ค์ ์๊ธฐ ์์ ๋ค์์ ์ด๋ค ์์์ธ์ง๋ง์ ๊ธฐ์ตํ๊ณ ์๋ค. ๋ฐ๋ผ์ ์ด ๋ถ๋ถ๋ง ๊ณ ์ณ์ฃผ๋ฉด ์ญ์ ์ ์ฝ์ ์ O(1) ๋ง์ ํด๊ฒฐํ ์ ์๋ ๊ฒ์ด๋ค.ํ์ง๋ง linked list ์ญ์ ํ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์๋ค. ๋ฐ๋ก Searching ๊ณผ์ ์ ์์ด์ ์ฒซ๋ฒ์งธ ์์๋ถํฐ ํ๋ํ๋ ๋ค ํ์ธํด๋ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ๋ ผ๋ฆฌ์ ์ ์ฅ ์์์ ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์๊ฐ ์ผ์นํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.์ด ๊ณผ์ ๋๋ฌธ์, ์ด๋ ํ ์์๋ฅผ ์ญ์ ๋๋ ์ถ๊ฐํ๊ณ ์ ํ์ ๋, ๊ทธ ์์๋ฅผ ์ฐพ๊ธฐ ์ํด์ O(n)์ ์๊ฐ์ด ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๊ธฐ ๋๋ค. ๊ฒฐ๊ตญ linked list ์๋ฃ๊ตฌ์กฐ๋ searching์๋ O(n)์ time complexity๋ฅผ ๊ฐ๊ณ , ์ฝ์ , ์ญ์ ์ ๋ํด์๋ O(n)์ time complexity๋ฅผ ๊ฐ๋๋ค. ๊ทธ๋ ๋ค๊ณ ํด์ ์์ฃผ ์ธ๋ชจ์๋ ์๋ฃ๊ตฌ์กฐ๋ ์๋๊ธฐ์, ์ฐ๋ฆฌ๊ฐ ํ์ตํ๋ ๊ฒ์ด๋ค. ์ด linkes list๋ tree๊ตฌ์กฐ์ ๊ทผ๊ฐ์ด ๋๋ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ, tree์์ ์ฌ์ฉ๋์์ ๋ ๊ทธ ์ ์ฉ์ฑ์ด ๋๋ฌ๋๋ค.
Stack ์๋ฃ๊ตฌ์กฐ๋ Last In First Out(LIFO) ๋์ค์ ๋ค์ด๊ฐ ๋์ด ๋จผ์ ๋์จ๋ค. Stack์ ํน์ง์ด๋ค. ์ฐจ๊ณก์ฐจ๊ณก ์์ด๋ ๊ตฌ์กฐ๋ก ๋จผ์ stack์ ๋ค์ด๊ฐ๊ฒ ๋ ์์๋ ๋งจ ๋ฐ๋ฅ์ ๊น๋ฆฌ๊ฒ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฆ๊ฒ ๋ค์ด๊ฐ ๋ ์๋ค์ ๊ทธ ์์ ์์ด๊ฒ ๋๊ณ ํธ์ถ ์ ๊ฐ์ฅ ์์ ์๋ ๋ ์์ด ํธ์ถ๋๋ ๊ตฌ์กฐ์ด๋ค.
Queue ์๋ฃ๊ตฌ์กฐ๋ First In First Out(FIFO) ๋จผ์ ๋ค์ด๊ฐ ๋์ด ๋จผ์ ๋์จ๋ค. Stack ๊ณผ๋ ๋ฐ๋๋ก ๋จผ์ ๋ค์ด๊ฐ ๋์ด ๋งจ ์์์ ๋๊ธฐํ๊ณ ์๋ค๊ฐ ๋จผ์ ๋์ค๊ฒ ๋๋ ๊ตฌ์กฐ์ด๋ค.
ํธ๋ฆฌ๋ ์คํ์ด๋ ํ์ ๊ฐ์ ์ ํ ๊ตฌ์กฐ๊ฐ ์๋ ๋น์ ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํธ๋ฆฌ๋ ๊ณ์ธต์ ๊ด๊ณ(Hierachical Relationship)์ ํํํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ด ํธ๋ฆฌ๋ผ๋ ์๋ฃ๊ตฌ์กฐ๋ ํํ์ ์ง์คํ๋ค. ๋ฌด์์ธ๊ฐ๋ฅผ ์ ์ฅํ๊ณ ๊บผ๋ด์ผ ํ๋ค๋ ์ฌ๊ณ ์์ ๋ฒ์ด๋ ํธ๋ฆฌ๋ผ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ๋ณด์.
ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ตฌ์ฑ์์๋ค Node(๋ ธ๋) : ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ฐ๊ฐ์ ์์๋ฅผ ์๋ฏธํ๋ค. Edge(๊ฐ์ ) : ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ๋ ธ๋์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ์ ์ ์๋ฏธํ๋ค. **Root Node(๋ฃจํธ ๋ ธ๋) : ํธ๋ฆฌ ๊ตฌ์กฐ์์ ์ต์์์ ์๋ ๋ ธ๋๋ฅผ ์๋ฏธํ๋ค. **Terminal Node( = Leaf Node, ๋จ๋ง ๋ ธ๋) : ํ์์ ๋ค๋ฅธ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ๋์ด ์์ง ์๋ ๋ ธ๋๋ฅผ ์๋ฏธํ๋ค. **Internal Node(๋ด๋ถ๋ ธ๋, ๋น๋จ๋ง ๋ ธ๋) : ๋จ๋ง ๋ ธ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ ธ๋๋ก ๋ฃจํธ ๋ ธ๋๋ฅผ ํฌํจํ๋ค.
๋ฃจํธ ๋ ธ๋๋ฅผ ์ค์ฌ์ผ๋ก ๋ ๊ฐ์ ์๋ธ ํธ๋ฆฌ(ํฐ ํธ๋ฆฌ์ ์ํ๋ ์์ ํธ๋ฆฌ)๋ก ๋๋์ด ์ง๋ค. ๋ํ ๋๋์ด์ง ๋ ์๋ธ ํธ๋ฆฌ๋ ๋ชจ๋ ์ด์ง ํธ๋ฆฌ์ฌ์ผ ํ๋ค. ์ฌ๊ท์ ์ธ ์ ์๋ผ ๋ง๋๋ฏ ํ๋ฉด์๋ ์ดํด๊ฐ ์ฝ์ง ์์ ๋ฏํ๋ค. ํ ๊ฐ์ง ๋ง๋ถ์ด์๋ฉด ๊ณต์งํฉ๋ ์ด์ง ํธ๋ฆฌ๋ก ํฌํจ์์ผ์ผ ํ๋ค. ๊ทธ๋์ผ ์ฌ๊ท์ ์ผ๋ก ์กฐ๊ฑด์ ํ์ธํด๊ฐ์๋, leaf node์ ๋ค ๋ฌ์์ ๋, ์ ์๊ฐ ๋ง์กฑ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์์ฐ์ค๋ฝ๊ฒ ๋ ธ๋๊ฐ ํ๋ ๋ฟ์ธ ๊ฒ๋ ์ด์ง ํธ๋ฆฌ์ ์์ ๋ง์กฑํ๊ฒ ๋๋ค.
ํธ๋ฆฌ์์๋ ๊ฐ ์ธต๋ณ๋ก ์ซ์๋ฅผ ๋งค๊ฒจ์ ์ด๋ฅผ ํธ๋ฆฌ์ 'Level(๋ ๋ฒจ)'์ด๋ผ๊ณ ํ๋ค. ๋ ๋ฒจ์ ๊ฐ์ 0๋ถํฐ ์์ํ๊ณ ๋ฐ๋ผ์ ๋ฃจํธ ๋ ธํธ์ ๋ ๋ฒจ์ 0์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํธ๋ฆฌ์ ์ต๊ณ ๋ ๋ฒจ์ ๊ฐ๋ฆฌ์ผ 'height(๋์ด)'๋ผ๊ณ ํ๋ค.
๋ชจ๋ ๋ ๋ฒจ์ด ๊ฝ ์ฐฌ ์ด์ง ํธ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌ์ผ ํฌํ ์ด์ง ํธ๋ฆฌ๋ผ๊ณ ํ๋ค.
์์์ ์๋๋ก, ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์์๋๋ก ์ฐจ๊ณก์ฐจ๊ณก ์ฑ์์ง ์ด์ง ํธ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌ์ผ ์์ ์ด์ง ํธ๋ฆฌ๋ผ๊ณ ํ๋ค.