์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- ์ธํ ๋ฆฌ์ ์ด
- ์ฒซ๊ธ์๋๋ฌธ์
- ๋ฐ์ผ๋ฆฌ์ฝ๋ฉ
- ๋ฐฑ์๋
- CLI๋ช ๋ น์ด
- ํ๊ณ
- ์คํ๋ง
- ์๋ฃ๊ตฌ์กฐ
- ๊ณ์ฐ๊ธฐ๋ง๋ค๊ธฐ
- Spring Data JDBC
- Spring Security
- ํ์ดํ๋ก๊ทธ๋๋ฐ
- ๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ
- spring data jpa
- ์ปฌ๋ ์ ํ๋ ์์ํฌ
- java
- testing
- FilterChain
- ๊ทธ๋ฆฌ๋
- ๊นํ๋ธ
- CSS
- ์๊ณ ๋ฆฌ์ฆ
- ๋ถํธ์บ ํ
- HTML
- ์๋ฐ
- ๊ฑฐ๋ญ์ ๊ณฑ
- fibonacci
- Publishing
- ๋ฌธ์์ด๋ค์ง๊ธฐ
- ์ ๋ค๋ฆญ์ค
Archives
- Today
- Total
๋์ ๋ชจ์
024 | Data Structure - Tree, Graph ๋ณธ๋ฌธ
๐ Tree
๐ค ๊ฐ๋
- ๊ณ์ธต์ ์๋ฃ๊ตฌ์กฐ
- ๋์ ์ ๋ณด์ ๊ฐ ํญ๋ชฉ๋ค์ ๊ณ์ธต์ ์ผ๋ก ์ฐ๊ด๋๋๋ก ๊ตฌ์กฐํ์ํค๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ๋น์ ํ ์๋ฃ๊ตฌ์กฐ
- ๋จ๋ฐฉํฅ ๊ทธ๋ํ

๊น์ด (depth)
- ๋ฃจํธ๋ก๋ถํฐ ํ์ ๊ณ์ธต์ ํน์ ๋ ธ๋๊น์ง์ ๊น์ด(depth)๋ฅผ ํํ
๋ ๋ฒจ(Level)
- ๊ฐ์ ๊น์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ ธ๋์ ๋ฌถ์
- ํ์ ๋ ธ๋(Sibling Node): ๊ฐ์ ๋ ๋ฒจ์ ๋๋ํ ์๋ ๋ ธ๋
๋์ด(Height)
- ๋ฆฌํ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฃจํธ๊น์ง์ ๋์ด(height)๋ฅผ ํํ
- ๋ฆฌํ ๋
ธ๋์ ์ง๊ฐ์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋
ธ๋์ ๋์ด๋ฅผ ํํ
๋ถ๋ชจ ๋ ธ๋๋ ์์ ๋ ธ๋์ ๊ฐ์ฅ ๋์ height ๊ฐ์ +1ํ ๊ฐ์ ๋์ด๋ก ๊ฐ์ง - ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋์ด๋ฅผ ํํํ ๋์๋ ๊ฐ ๋ฆฌํ ๋ ธ๋์ ๋์ด๋ฅผ 0์ผ๋ก ๋์
์๋ธ ํธ๋ฆฌ(Sub tree)
- ํธ๋ฆฌ ๊ตฌ์กฐ์ root์์ ๋ป์ด ๋์ค๋ ํฐ ํธ๋ฆฌ์ ๋ด๋ถ์, ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ ์์ ํธ๋ฆฌ
๐ค ์๋ฃ๊ตฌ์กฐ์ ์ฉ์ด
- ๋ ธ๋(Node): ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋ ๋ชจ๋ ๊ฐ๋ณ ๋ฐ์ดํฐ
- ๋ฃจํธ(Root): ํธ๋ฆฌ ๊ตฌ์กฐ์ ์์์ ์ด ๋๋ ๋ ธ๋
- ๋ถ๋ชจ ๋ ธ๋(Parent node): ๋ ๋ ธ๋๊ฐ ์ํ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ด ์์ ๋ ์๋์ ์ผ๋ก ๋ฃจํธ์์ ๊ฐ๊น์ด ๋ ธ๋
- ์์ ๋ ธ๋(Child node): ๋ ๋ ธ๋๊ฐ ์ํ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ด ์์ ๋ ์๋์ ์ผ๋ก ๋ฃจํธ์์ ๋จผ ๋ ธ๋
- ๋ฆฌํ(Leaf): ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋ ์ง์ , ์์ ๋ ธ๋๊ฐ ์๋ ๋ ธ๋
๐ค Tree ์ฌ์ฉ ์์
- ์ปดํจํฐ ๋๋ ํ ๋ฆฌ
- ๋ชจ๋ ํด๋๋ ํ๋์ ํด๋(๋ฃจํธ ํด๋, /)์์ ์์๋์ด, ๊ฐ์ง๋ฅผ ๋ป์ด๋๊ฐ
- ์๋์ปต ํ ๋๋จผํธ ๋์งํ
- ๊ฐ๊ณ๋(์กฑ๋ณด)
๐ Graph
๐ค ๊ฐ๋
- ํ ์์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๋ ธ๋์ ์ ํ ์งํฉ๊ณผ ์ฃ์ง ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋ ๋น์ ํ ๋ฐ์ดํฐ๊ตฌ์กฐ
- ์ฐ๊ฒฐ๋์ด์๋ ๊ฐ์ฒด ๊ฐ ๊ด๊ณ๋ฅผ ํํํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ
- ์ง์ ์ ์ธ ๊ด๊ณ: ๋ ์ ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ์
- ๊ฐ์ ์ ์ธ ๊ด๊ณ: ๋ช ๊ฐ์ ์ ๊ณผ ์ ์ ๊ฑธ์ณ ์ด์ด์ง

๐ค ๊ทธ๋ํ ๊ด๋ จ ์ฉ์ด

- ์ ์ (vertex)(= ๋ ธ๋(node)): ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ทธ๋ํ์ ๊ธฐ๋ณธ ์์
- ๊ฐ์ (edge): ์ ์ ๊ฐ์ ๊ด๊ณ. ์ ์ (= ๋ ธ๋) ์ฐ๊ฒฐ ์
- ์ธ์ ์ ์ (adjacent vertex): ํ๋์ ์ ์ ์์ ๊ฐ์ ์ ์ํด ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ ์ ์
- ์ธ์ (adjacency): ๋ ์ ์ ๊ฐ์ ๊ฐ์ ์ด ์ง์ ์ด์ด์ ธ ์๋ค๋ฉด ์ด ๋ ์ ์ ์ ์ธ์ ํ ๊ฒ
- ๊ฐ์ค์น ๊ทธ๋ํ(weighted Graph): ์ฐ๊ฒฐ์ ๊ฐ๋(์ถ๊ฐ์ ์ธ ์ ๋ณด)๊ฐ ์ผ๋ง๋ ๋๋์ง ์ ํ์ ธ ์๋ ๊ทธ๋ํ
- ๋น๊ฐ์ค์น ๊ทธ๋ํ(unweighted Graph): ์ฐ๊ฒฐ์ ๊ฐ๋๊ฐ ์ ํ์ ธ ์์ง ์๋ ๊ทธ๋ํ
- ๋ฌด(๋ฐฉ)ํฅ ๊ทธ๋ํ(undirected graph): ๋ ์ง์ ์ด ์ผ๋ฐฉํตํ ๋๋ก๋ก ์ด์ด์ ธ ์๋ค๋ฉด ๋จ๋ฐฉํฅ์ธ ๊ฐ์ ์ผ๋ก ํํ
- ์ง์ ์ฐจ์(in-degree): ๋ฐฉํฅ ๊ทธ๋ํ์์ ์ธ๋ถ์์ ์ค๋ ๊ฐ์ ์ ์ (= ๋ด์ฐจ์)
- ์ง์ถ ์ฐจ์(out-degree): ๋ฐฉํฅ ๊ทธ๋ํ์์ ์ธ๋ถ๋ก ํฅํ๋ ๊ฐ์ ์ ์ (= ์ธ์ฐจ์) ๋ฐฉํฅ ๊ทธ๋ํ์ ์๋ ์ ์ ์ ์ง์ ์ฐจ์ ๋๋ ์ง์ถ ์ฐจ์์ ํฉ = ๋ฐฉํฅ ๊ทธ๋ํ์ ๊ฐ์ ์ ์(๋ด์ฐจ์ + ์ธ์ฐจ์)
- ๊ฒฝ๋ก ๊ธธ์ด(path length): ๊ฒฝ๋ก ๊ตฌ์ฑ์ ์ฌ์ฉ๋ ๊ฐ์ ์ ์
- ๋จ์ ๊ฒฝ๋ก(simple path): ๊ฒฝ๋ก ์ค ๋ฐ๋ณต๋๋ ์ ์ ์ด ์๋ ๊ฒฝ์ฐ
- ์๊ธฐ ๋ฃจํ(self loop): ์ ์ ์์ ์ง์ถํ๋ ๊ฐ์ ์ด ๊ณง๋ฐ๋ก ์๊ธฐ ์์ ์๊ฒ ์ง์ ํ๋ ๊ฒฝ์ฐ ์๊ธฐ ๋ฃจํ๋ฅผ ๊ฐ์ก๋ค ๋ผ๊ณ ํํํจ. ๋ค๋ฅธ ์ ์ ์ ๊ฑฐ์น์ง ์๋๋ค๋ ๊ฒ์ด ํน์ง
- ์ฌ์ดํด(cycle): ํ ์ ์ ์์ ์ถ๋ฐํ์ฌ ๋ค์ ํด๋น ์ ์ ์ผ๋ก ๋์๊ฐ ์ ์๋ ๊ฒ
๐ค Graph ํํ๋ฐฉ์
์ธ์ ํ๋ ฌ(Adjacency Matrix)
- ๋ ์ ์ ์ ๋ฐ๋ก ์ด์ด์ฃผ๋ ๊ฐ์
- ์๋ก ๋ค๋ฅธ ์ ์ ๋ค์ด ์ธ์ ํ ์ํ์ธ์ง๋ฅผ ํ์ํ ํ๋ ฌ๋ก, 2์ฐจ์ ๋ฐฐ์ด์ ํํ๋ก ๋ํ๋
- ์ฌ์ฉํ ๋
- ๋ ์ ์ ์ฌ์ด์ ๊ด๊ณ๊ฐ ์๋์ง, ์๋์ง ํ์ธ
- ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ฐพ๊ณ ์ ํ ๋
์ธ์ ๋ฆฌ์คํธ(Adjacency List)
- ๊ฐ ์ ์ ์ด ์ด๋ค ์ ์ ๊ณผ ์ธ์ ํ๋์ง๋ฅผ ๋ฆฌ์คํธ์ ํํ๋ก ํํ
- ๊ฐ ์ ์ ๋ง๋ค ํ๋์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ, ์ด ๋ฆฌ์คํธ๋ ์์ ๊ณผ ์ธ์ ํ ๋ค๋ฅธ ์ ์ ์ ๋ด์
- ์์๋ ์ค์ํ์ง ์์
- ์ฌ์ฉํ ๋
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์ ๋
์ธ์ ํ๋ ฌ / ์ธ์ ๋ฆฌ์คํธ ์ ํ ๋ฐฉ๋ฒ
- ์ธ์ ํ๋ ฌ: ๊ทธ๋ํ์ ๊ฐ์ ์ด ๋ง์ ๋ฐ์ง ๊ทธ๋ํ(Dense Graph)์ผ ๋
- ์ธ์ ๋ฆฌ์คํธ: ๊ทธ๋ํ ๋ด ๊ฐ์ ์ด ์ ์ ์ซ์๋ง์ ๊ฐ์ง๋ ํฌ์ ๊ทธ๋ํ(Sparse Graph)์ผ ๋
๐ค Tree vs Graph

โ Ref.
[์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ํ(Graph)๋ - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
๐ ๋ ๊ณต๋ถํด๋ณผ ๊ฒ
- ์ฌ๋ฌ๊ฐ์ง ํธ๋ฆฌ๊ตฌ์กฐ
'SEB > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
026 | Greedy, Brute-Force, Binary Search Algorithm (0) | 2022.07.29 |
---|---|
026 | Time Complexity (0) | 2022.07.28 |
023 | Data Structure - Stack & Queue (0) | 2022.07.25 |
019 | Java - I/O, Thread, JVM (0) | 2022.07.19 |
018 | Java - Enum, Annotation, Lambda, Stream (0) | 2022.07.18 |
Comments