์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
- ์ฝ๋๋ธ๋ญ
- ๋ธ๋์น ํ์ธ
- ์ฝ๋๋ธ๋ก
- ๋งํฌ๋ค์ด
- ๋ธ๋์น ์ญ์
- branch ์ญ์
- ๋ธ๋์น ์์ฑ
- Git๋ช ๋ น์ด
- ![rejected]
- branch ํ์ธ
- branch ์์ฑ
- markdown
- Today
- Total
DevLog
TIL(20210722) - ์๋ฃ๊ตฌ์กฐ(Stack, Queue, Tree, Graph) ๋ณธ๋ฌธ
TIL(20210722) - ์๋ฃ๊ตฌ์กฐ(Stack, Queue, Tree, Graph)
Seungjae Lee 2021. 7. 22. 13:50๐ Today
- Stack, Queue, Tree, Graph ์๋ฃ๊ตฌ์กฐ ์ดํด์ ๊ฐ ์๋ฃ๊ตฌ์กฐ์ ๊ฐ๋ ๊ณผ ๊ตฌ์กฐ ํ์
- ์ํฉ์ ๋ง๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด
๐ค Learned
์๋ฃ๊ตฌ์กฐ(Data Structures)๋?
๋ฐ์ดํฐ๋ ๋ถ์ํ๊ณ ์ ๋ฆฌํ์ฌ ํ์ฉํด์ผ ์๋ฏธ๋ฅผ ๊ฐ์ง ์ ์๊ณ , ๋ฐ์ดํฐ์ ํน์ง์ ์ ํ์ (๋ถ์)ํ์ฌ ํ์ฉํด์ผ ํ๋ค.
์ด๋ฅผ ์ํด ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ๋ชจ์ ๊ฒ์ด ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์ฆ, ์๋ฃ๊ตฌ์กฐ๋? ์ฌ๋ฌ ๋ฐ์ดํฐ๋ค์ ๋ฌถ์์ ์ ์ฅํ๊ณ , ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ ๊ฒ์ด๋ค.
๊ฐ ์๋ฃ๊ตฌ์กฐ๋ค์ ํน์ง์ ์ ์ดํดํ๊ณ ์ํฉ์ ๋ง๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค.
์คํ(Stack)
์คํ(Stack)์ ์๋ค, ์์ด๋ค, ํฌ๊ฐ์ง๋ค ์ ๊ฐ์ ๋ป์ ๊ฐ์ง๊ณ ์๋ค.
๊ฐ์ฅ ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๋ ๊ฐ์ฅ ๋์ค์ ๋์ฌ ์ ์๊ณ , ๊ฐ์ฅ ๋์ค์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ(data)๋ ๊ฐ์ฅ ๋จผ์ ๋์ค๋
LIFO(Last In First Out) ํน์ FILO(First In Last Out)์ ํน์ง์ผ๋ก ๊ฐ์ง๊ณ ์๋ค.
์ค์ฌ์ฉ์ ์์ ๋ก๋ ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก ๊ฐ๊ธฐ, ์์ผ๋ก ๊ฐ๊ธฐ ๊ธฐ๋ฅ์ด ์๋ค.
// Stack ๊ตฌํ์ ์ํ ๊ธฐ๋ณธ ์ฝ๋
class Stack {
//stack constructor๋ฅผ ์์ฑํฉ๋๋ค.
constructor() {
this.storage = {};
this.top = 0;
}
// stack์ ์ฌ์ด์ฆ๋ฅผ ๊ตฌํฉ๋๋ค.
// this.top์ ์คํ์ด ์์ผ ๋๋ง๋ค ํ๋์ฉ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ top์ผ๋ก size๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
// this.top์ ์คํ์ ์๋กญ๊ฒ ์ถ๊ฐ๋ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋
๋๋ค. 0๋ถํฐ 1์ฉ ์ฆ๊ฐํ๋ฉฐ ํํํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด ์์์ ๊ฐ์๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค
size() {
return this.top;
}
//stack์ element๋ฅผ ์ถ๊ฐํฉ๋๋ค.
//์๋กญ๊ฒ ์ถ๊ฐ๋ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๋ this.top์ ํค๋ก, ์์๋ฅผ ๊ฐ์ผ๋ก ํ์ฌ storage์ ํ ๋นํฉ๋๋ค.this.top์ ๋ค์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ์ฌ ์๋ก์ด ์์์ ๋๋นํฉ๋๋ค.
push(element) {
this.storage[this.top] = element;
this.top += 1;
}
// stack์์ element๋ฅผ ์ ๊ฑฐํ ๋ค ํด๋น element๋ฅผ ๋ฐํํฉ๋๋ค.
// ๋ง์ฝ size๊ฐ 0์ด๋ผ๋ฉด ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์ต๋๋ค.
// top-1๋ก ์ต์๋จ์ ์ค์ ํ ํ ๋ณ์์ ์ ์ฅํ๊ณ , ์คํ์์ ์ญ์ ํฉ๋๋ค.
// ํ๋๋ฅผ ์ ๊ฑฐํ์ผ๋ top๋ ๊ฐ์ํฉ๋๋ค.
pop() {
if (this.size() <= 0) {
return;
}
const result = this.storage[this.top - 1];
delete this.storage[this.top - 1];
this.top -= 1;
return result;
}
}
ํ(Queue)
ํ(Queue)๋ ์ค์ ์์ ๊ธฐ๋ค๋ฆฌ๋ค, ๋๊ธฐ ํ๋ ฌ์ด๋ผ๋ ๋ป์ ๊ฐ์ง๊ณ ์๋ค.
Queue๋ Stack๊ณผ ๋ฐ๋๋ก,
๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ(data)๊ฐ ๋จผ์ ๋์ค๊ณ , ๋์ค์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๋ ๋์ค์ ๋์ค๋
FIFO(First In First Out) ํน์ LILO(Last In Last Out)์ ํน์ง์ผ๋ก ๊ฐ์ง๊ณ ์๋ค.
์ค์ฌ์ฉ์ ์์ ๋ก๋ ํ๋ฆฐํฐ์ ์ธ์ ๋๊ธฐ์ด์ด ์๋ค.
// Queue ๊ตฌํ์ ์ํ ๊ธฐ๋ณธ ์ฝ๋
class Queue {
//๊ฐ์ฅ ์์ ์๋ ์์๋ฅผ front,
//๊ฐ์ฅ ๋ค์ ์๋ ์์๋ฅผ rear ๋ผ๊ณ ํ์ ๋
//queue constructor ์์ฑ
constructor() {
this.storage = {};
this.front = 0;
this.rear = 0;
}
// queue์ ์ฌ์ด์ฆ๋ฅผ ๊ตฌํฉ๋๋ค.
// queue๋ ์ถ๊ฐ๋ ๋, rear์ ๊ฐ์ด ์ปค์ง๊ณ ์ญ์ ๋ ๋, front๊ฐ ๋ณ๊ฒฝ์ด ๋๋ฌธ์, ๊ฐ ๊ฐ์ ์์์ผ size๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
size() {
return this.rear - this.front;
}
// queue์ element๋ฅผ ์ถ๊ฐํฉ๋๋ค.
// ์๋กญ๊ฒ ์ถ๊ฐ๋ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๋ this.rear๋ฅผ ํค๋ก, ์์๋ฅผ ๊ฐ์ผ๋ก ํ์ฌ storage์ ํ ๋นํฉ๋๋ค. this.rear์ ๋ค์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ์ฌ ์๋ก์ด ์์์ ๋๋นํฉ๋๋ค.
enqueue(element) {
this.storage[this.rear] = element;
this.rear += 1;
}
// queue์์ element๋ฅผ ์ ๊ฑฐ ํ ๋ค ํด๋น element๋ฅผ ๋ฐํํฉ๋๋ค.
// ๋ง์ฝ size๊ฐ 0์ด๋ผ๋ฉด ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์ต๋๋ค.
// this.front+1๋ก ๊ฐ์ฅ ์์ ์๋ ์์๋ฅผ ๋ค์ ์ค์ ํ ํ ๋ณ์์ ์ ์ฅํ๊ณ , ํ์์ ์ญ์ ํฉ๋๋ค.
dequeue() {
if (this.size() === 0) {
return;
}
const result = this.storage[this.front];
delete this.storage[this.front];
this.front += 1;
return result;
}
}
๊ทธ๋ํ(graph)
๊ทธ๋ํ๋ ์ฌ๋ฌ๊ฐ์ ์ ๋ค์ด ์๋ก ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ ๊ด๊ณ๋ฅผ ํํํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์ง์ ์ ์ธ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ ์ ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ ์ด ์๋ค.
๊ฐ์ ์ ์ธ ๊ด๊ณ๋ผ๋ฉด ๋ช ๊ฐ์ ์ ๊ณผ ์ ์ ๊ฑธ์ณ ์ด์ด์ง๋ค.
ํ๋์ ์ ์ ๊ทธ๋ํ์์๋ ์ ์ (vertex)์ด๋ผ๊ณ ํํํ๊ณ ,
ํ๋์ ์ ์ ๊ฐ์ (edge)์ด๋ผ๊ณ ํ๋ค.
์ค์ฌ์ฉ์ ์์๋ก๋ ํฌํธ ์ฌ์ดํธ์ ๊ฒ์ ์์ง, SNS์์ ์ฌ๋๋ค๊ณผ์ ๊ด๊ณ, ๋ค๋น๊ฒ์ด์ (๊ธธ์ฐพ๊ธฐ) ๋ฑ์ด ์๋ค.
- ์ ์ : ์์ธ, ๋์ , ๋ถ์ฐ
- ๊ฐ์ : ์์ธ—๋์ , ๋์ —๋ถ์ฐ, ๋ถ์ฐ—์์ธ
๊ทธ๋ํ ์ฉ์ด
- ๋ฌด(๋ฐฉ)ํฅ๊ทธ๋ํ(undirected graph): ๋ด๋น๊ฒ์ด์ ์ ๋ฌด(๋ฐฉ)ํฅ ๊ทธ๋ํ์ด๋ค. ์์ธ์์ ๋ถ์ฐ์ผ๋ก ๊ฐ ์ ์๋ฏ, ๋ฐ๋๋ก ๋ถ์ฐ์์ ์์ธ๋ก ๊ฐ๋๊ฒ๋ ๊ฐ๋ฅํ๋ค.
- ๋จ๋ฐฉํฅ ๊ทธ๋ํ(directed) : ๋ ์ง์ ์ด ์ผ๋ฐฉํตํ ๋๋ก๋ก ์ด์ด์ ธ ์๋ค๋ฉด ๋จ๋ฐฉํฅ์ธ ๊ฐ์ ์ผ๋ก ํํํ ์ ์๋ค.
- ์ง์ ์ฐจ์(in-degree) / ์ง์ถ์ฐจ์(out-degree): ํ ์ ์ ์ ์ง์ (๋ค์ด์ค๋ ๊ฐ์ )ํ๊ณ ์ง์ถ(๋๊ฐ๋ ๊ฐ์ )ํ๋ ๊ฐ์ ์ด ๋ช ๊ฐ์ธ์ง๋ฅผ ๋ํ๋ธ๋ค.
- ์ธ์ (adjacency): ๋ ์ ์ ๊ฐ์ ๊ฐ์ ์ด ์ง์ ์ด์ด์ ธ ์๋ค๋ฉด ์ด ๋ ์ ์ ์ ์ธ์ ํ ์ ์ ์ด๋ค.
- ์๊ธฐ ๋ฃจํ(self loop): ์ ์ ์์ ์ง์ถํ๋ ๊ฐ์ ์ด ๊ณง๋ฐ๋ก ์๊ธฐ ์์ ์๊ฒ ์ง์ ํ๋ ๊ฒฝ์ฐ ์๊ธฐ ๋ฃจํ๋ฅผ ๊ฐ์ก๋ค ๋ผ๊ณ ํํํ๋ค. ๋ค๋ฅธ ์ ์ ์ ๊ฑฐ์น์ง ์๋๋ค๋ ๊ฒ์ด ํน์ง์ด๋ค.
- ์ฌ์ดํด(cycle): ํ ์ ์ ์์ ์ถ๋ฐํ์ฌ ๋ค์ ํด๋น ์ ์ ์ผ๋ก ๋์๊ฐ ์ ์๋ค๋ฉด ์ฌ์ดํด์ด ์๋ค๊ณ ํํํ๋ค. ๋ด๋น๊ฒ์ด์ ๊ทธ๋ํ๋ ์์ธ —> ๋์ —> ๋ถ์ฐ —> ์์ธ ๋ก ์ด๋์ด ๊ฐ๋ฅํ๋ฏ๋ก, ์ฌ์ดํด์ด ์กด์ฌํ๋ ๊ทธ๋ํ์ด๋ค.
ํธ๋ฆฌ(Tree)
์๋ฃ๊ตฌ์กฐ Tree๋ ์ด๋ฆ ๊ทธ๋๋ก ๋๋ฌด์ ํํ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ํํ๋ ๋๋ฌด๋ฅผ ๊ฑฐ๊พธ๋ก ๋ค์ง์ด ๋์ ๋ฏํ ๋ชจ์ต์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ํ์ ์ฌ๋ฌ ๊ตฌ์กฐ ์ค ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ํ ๊ตฌ์กฐ๋ก, ํ๋์ ๋ฟ๋ฆฌ๋ก๋ถํฐ ๊ฐ์ง๊ฐ ์ฌ๋ฐฉ์ผ๋ก ๋ป์ ํํ๊ฐ ๋๋ฌด์ ๋ฎ์ ์๋ค๊ณ ํด์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์๋ฃ๊ตฌ์กฐ Tree๋ ๊น์ด์ ๋์ด, ๋ ๋ฒจ ๋ฑ์ ์ธก์ ํ ์ ์์ต๋๋ค.
๋ง์น ๊ฐ๊ณ๋์ ํก์ฌํด ๋ณด์ด๋ ์ด ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ์๋์ ์๋ ํ๋ ์ด์์ ๋ฐ์ดํฐ์ ๋ฌด๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ณ์ธต์ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋์ด์ํจ ์ ํ ๊ตฌ์กฐ๊ฐ ์๋๋ผ, ํ๋์ ๋ฐ์ดํฐ ๋ค์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ์ ์๋ ๋น์ ํ ๊ตฌ์กฐ์ ๋๋ค. ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๊ณ์ธต์ ์ผ๋ก ํํ์ด ๋๊ณ , ์๋๋ก๋ง ๋ป์ด๋๊ฐ๊ธฐ ๋๋ฌธ์ ์ฌ์ดํด์ด ์์ต๋๋ค.
๊น์ด (depth)
ํธ๋ฆฌ ๊ตฌ์กฐ์์๋ ๋ฃจํธ๋ก๋ถํฐ ํ์ ๊ณ์ธต์ ํน์ ๋ ธ๋๊น์ง์ ๊น์ด(depth)๋ฅผ ํํํ ์ ์์ต๋๋ค. ๋ฃจํธ ๋ ธ๋๋ ์ง๋ฉด์ ์๋ ๊ฒ์ฒ๋ผ ๊น์ด๊ฐ 0์ ๋๋ค. ์ ๊ทธ๋ฆผ์์ ๋ฃจํธ A์ depth๋ 0์ด๊ณ , B์ C์ ๊น์ด๋ 1์ ๋๋ค. D, E, F, G์ ๊น์ด๋ 2์ ๋๋ค.
๋ ๋ฒจ(Level)
ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๊ฐ์ ๊น์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ ธ๋๋ฅผ ๋ฌถ์ด์ ๋ ๋ฒจ(level)๋ก ํํํ ์ ์์ต๋๋ค. depth๊ฐ 0์ธ ๋ฃจํธ A์ level์ 1์ ๋๋ค. depth๊ฐ 1์ธ B์ C์ level์ 2์ ๋๋ค. D, E, F, G์ ๋ ๋ฒจ์ 3์ ๋๋ค. ๊ฐ์ ๋ ๋ฒจ์ ๋๋ํ ์๋ ๋ ธ๋๋ฅผ ํ์ ๋ ธ๋(sibling Node) ๋ผ๊ณ ํฉ๋๋ค.
๋์ด(Height)
ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๋ฆฌํ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฃจํธ๊น์ง์ ๋์ด(height)๋ฅผ ํํํ ์ ์์ต๋๋ค. ๋ฆฌํ ๋ ธ๋์ ์ง๊ฐ์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋ ธ๋์ ๋์ด๋ฅผ ํํํ๋ฉฐ, ๋ถ๋ชจ ๋ ธ๋๋ ์์ ๋ ธ๋์ ๊ฐ์ฅ ๋์ height ๊ฐ์ +1ํ ๊ฐ์ ๋์ด๋ก ๊ฐ์ง๋๋ค. ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋์ด๋ฅผ ํํํ ๋์๋ ๊ฐ ๋ฆฌํ ๋ ธ๋์ ๋์ด๋ฅผ 0์ผ๋ก ๋์ต๋๋ค.์ ๊ทธ๋ฆผ์์ H, I, E, F, J์ ๋์ด๋ 0์ ๋๋ค. D์ G์ ๋์ด๋ 1์ ๋๋ค. B์ C์ ๋์ด๋ 2์ ๋๋ค. ์ด๋ B๋ D์ height + 1 ์, C๋ G์ height + 1 ์ ๋์ด๋ก ๊ฐ์ง๋๋ค. ๋ฐ๋ผ์, ๋ฃจํธ A์ ๋์ด๋ 3์ ๋๋ค.
์๋ธ ํธ๋ฆฌ(Sub tree)
ํธ๋ฆฌ ๊ตฌ์กฐ์์ root์์ ๋ป์ด๋์ค๋ ํฐ ํธ๋ฆฌ์ ๋ด๋ถ์, ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ ์์ ํธ๋ฆฌ๋ฅผ ์๋ธ ํธ๋ฆฌ ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. (D, H, I)๋ก ์ด๋ฃจ์ด์ง ์์ ํธ๋ฆฌ๋ ์๋ธ ํธ๋ฆฌ์ด๊ณ , (B, D, E)๋ (C, F, G, J)๋ ์๋ธ ํธ๋ฆฌ์ ๋๋ค.
์ค์ฌ์ฉ ์์๋ก๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๊ฐ ์๋ค
์ด์งํ์ํธ๋ฆฌ(Binary Search Tree)
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ํธ๋ฆฌํ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ๊ฒ ์ธ์ ํจ์จ์ ์ธ ํ์์ ์ํด ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค.
๋ง์ ํธ๋ฆฌ์ ๋ชจ์ต ์ค, ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ๋ง์ด ์ฌ์ฉํ๋ ์ด์ง ํธ๋ฆฌ(binary tree)์ ์ด์ง ํ์ ํธ๋ฆฌ(binary search tree)
๋จผ์ , ์ด์งํธ๋ฆฌ(Binary tree)๋ ์์ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ธ ๋ ธ๋๋ค๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ์ ๋๋ค. ์ด ๋ ๊ฐ์ ์์ ๋ ธ๋๋ ์ผ์ชฝ ์์ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ก ๋๋ ์ ์์ต๋๋ค.
์ด์ง ํธ๋ฆฌ๋ ์๋ฃ์ ์ฝ์ , ์ญ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ ์ด์ง ํธ๋ฆฌ(Full binary tree), ์์ ์ด์ง ํธ๋ฆฌ(Complete binary tree), ํฌํ ์ด์ง ํธ๋ฆฌ(Perfect binary tree)๋ก ๋๋ฉ๋๋ค.
์ด์ง ํธ๋ฆฌ ์ข ๋ฅ | ์์ด ํ๊ธฐ | ์ค๋ช |
---|---|---|
์ ์ด์ง ํธ๋ฆฌ | Full binary tree | ๊ฐ ๋ ธ๋๊ฐ 0 ๊ฐ ํน์ 2 ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ต๋๋ค. |
ํฌํ ์ด์ง ํธ๋ฆฌ | Perfect binary tree | ์ ์ด์ง ํธ๋ฆฌ์ด๋ฉด์ ์์ ์ด์ง ํธ๋ฆฌ์ธ ๊ฒฝ์ฐ์ ๋๋ค. ๋ชจ๋ ๋ฆฌํ ๋ ธ๋์ ๋ ๋ฒจ์ด ๋์ผํ๊ณ , ๋ชจ๋ ๋ ๋ฒจ์ด ๊ฐ๋ ์ฑ์์ ธ ์๋ ํธ๋ฆฌ์ ๋๋ค. |
์์ ์ด์ง ํธ๋ฆฌ | Complete binary tree | ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฐ๋ ์ฐจ ์์ด์ผ ํ๊ณ , ๋ง์ง๋ง ๋ ๋ฒจ์ ๋ ธ๋๋ ์ ๋ถ ์ฐจ ์์ง ์์๋ ๋์ง๋ง ์ผ์ชฝ์ด ์ฑ์์ ธ์ผ ํฉ๋๋ค. |
์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)๋ ๋ชจ๋ ์ผ์ชฝ ์์์ ๊ฐ์ด ๋ฃจํธ๋ ๋ถ๋ชจ๋ณด๋ค ์๊ณ , ๋ชจ๋ ์ค๋ฅธ์ชฝ ์์์ ๊ฐ์ด ๋ฃจํธ๋ ๋ถ๋ชจ๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ง๋ ํน์ง์ด ์์ต๋๋ค.
์ด์ง ํ์ ํธ๋ฆฌ๋ ๊ท ํ ์กํ ํธ๋ฆฌ๊ฐ ์๋ ๋, ์ ๋ ฅ๋๋ ๊ฐ์ ์์์ ๋ฐ๋ผ ํ์ชฝ์ผ๋ก ๋ ธ๋๋ค์ด ๋ชฐ๋ฆฌ๊ฒ ๋ ์ ์์ต๋๋ค. ๊ท ํ์ด ์กํ์ง ์์ ํธ๋ฆฌ๋ ํ์ํ๋ ๋ฐ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ์ ํด๊ฒฐํด์ผํ ๋ฌธ์ ์ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฝ์ ๊ณผ ์ญ์ ๋ง๋ค ํธ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ฌ์กฐ์ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ ์๊ณ ๋ฆฌ์ฆ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ถ๋ช ํ ํ, ์คํ์ ๋ํ ์ ์์ ํน์ง๋ค์ ์ดํดํ๊ณ ์ฝ๋๋ฅผ ๋ดค๋๋ฐ
์ถ์์ ์ธ ๊ทธ๋ฆผ์ผ๋ก ์ดํดํ ๊ฒ๊ณผ ์ง์ ์ฝ๋๋ก ๊ตฌํ๋ ๊ฒ๊ณผ๋
๋๋ฌด ๋ฌ๋ผ์ ๋นํฉ์ค๋ฝ๊ณ , ๋จธ๋ฆฌ์์์ ๊ตฌํ๋ ์ฝ๋์ ์๋ฃ๊ตฌ์กฐ๊ฐ ๋งค์นญ์ด ์๋๋ค.
๋ฐ๋ณต์ด ๋ต์ด๋๊น ์์ ํ ์ดํด ๋ ๋๊น์ง ์์ฃผ ๋ณด๊ณ ๋ ๋ณด๊ณ ๋ ๋ด์ผ๊ฒ ๋ค.
๐ Tomorrow
- Graph, Tree, BST, BFS&DFS ํ์ต ๋ฐ ์ ๋ฆฌ
'๐ค TIL(Today I Learned)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TIL(20210727) - ๋น๋๊ธฐ(callback, promise, asyncAwait) (0) | 2021.07.27 |
---|---|
TIL(20210723) - BFS & DFS (0) | 2021.07.23 |
TIL(20210720) - ์ฌ๊ท(recursion) (0) | 2021.07.21 |
TIL(20210718) - sort() ๋ฉ์๋ ์ฌ์ฉ๋ฒ (0) | 2021.07.18 |
TIL(20210717) - ํด๋์ค์ ์ค๋ธ์ ํธ์ ์ฐจ์ด์ , ํด๋์ค ์ ๋ฆฌ (0) | 2021.07.17 |