ํธ๋ฆฌ์ ์ํ ์ค
์ค์(inorder), ์ ์(preorder), ํ์(postoder) ์ํ์ ๋ํด ์์๋ณด์.
์ฌ๊ธฐ์ ์ค๋ช ํ ๋์ L์ LEFT, V๋ VISIT, R์ RIGHT๋ฅผ ์๋ฏธํ๋ค.
์ฆ, ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ, ๋ ธ๋ ๋ฐฉ๋ฌธ, ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
์ค์ ์ํ(inorder traversal)

์ค์ ์์๋ LVR ํ์์ด ์ด๋ฃจ์ด์ง๋ค.
์ฆ, ์ผ์ชฝ-๋ฐฉ๋ฌธ-์ค๋ฅธ์ชฝ ํ์์ด ์ฌ๊ท์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.

๊ฐ์ฅ ๋จผ์ ๋ฃจํธ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์๋ธํธ๋ฆฌ๋ก์ ํ์์ด ์์๋๋ค.
์ฆ, ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์์ ๋๋ค์ ์ค์ ์ํ๊ฐ ์ฌ๊ท์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.

B๋ ธ๋๊ฐ ๋ฃจํธ ๋ ธ๋์ธ ๊ฒ์ฒ๋ผ ๋๊ณ , ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ธ A๋ ธ๋๋ก์ ์ค์ ํ์์ด ์งํ๋๋ค.
์ดํ A๋ ธ๋๋ ์ผ์ชฝ ์๋ธํธ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ํด๋น ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธ(V)ํ๊ฒ ๋๋ค.
์ถ๋ ฅ: A

B๊ฐ ๋ฃจํธ ๋ ธ๋์ธ ๊ฒ ์ฒ๋ผ ๋ ๋, ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ํ์์ ๋ง์ณค์ผ๋
๋ฃจํธ ๋ ธ๋์ธ B์ ๋ฐฉ๋ฌธ์ด ์งํ๋๋ค.
์ถ๋ ฅ : A B

์ดํ B์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ก์ ์ค์ ํ์์ด ๋ค์ ์งํ๋๋ค. ์ด๋๋ D๋ ธ๋๊ฐ ๋ง์น ๋ฃจํธ ๋ ธ๋์ธ ๊ฒ ์ฒ๋ผ๋๋ค.

D๊ฐ ๋ฃจํธ ๋ ธํธ์ผ ๋, ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ธ C๋ ธ๋๋ก์ ์ค์ ํ์์ด ์งํ๋๋ค. ์ดํ C๋ ธ๋๋ ์ผ์ชฝ
์๋ธ ํธ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ํด๋น ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ฒ ๋๋ค.
์ถ๋ ฅ : A B C

์ดํ ๋ฃจํธ ๋ ธ๋์ธ D๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ฒ ๋๋ค
์ถ๋ ฅ A B C D

D๋ ธ๋๊ฐ ๋ฃจํธ ๋ ธ๋์ผ ๋, ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ธ E๋ ธ๋๋ก์ ์ค์ ํ์์ด ์งํ๋๊ณ
์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋ก E๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ค.
์ถ๋ ฅ A B C D E

F ๋ ธ๋๊ฐ ๋ฃจํธ ๋ ธ๋์ผ ๋ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ํ์์ด ๋ชจ๋ ์๋ฃ๋์์ผ๋, ๋ฃจํธ ๋ ธ๋์ธ F๋ฅผ ๋ฐฉ๋ฌธํ๋ค.
์ถ๋ ฅ : A B C D E F

์ดํ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์์ ์ค์ ํ์์ด ์งํ๋๋ค. ์ด๋ G๋ ธ๋๊ฐ ๋ฃจํธ ๋ ธ๋์ฒ๋ผ ๋๋ค.

G๋ ธ๋๊ฐ ๋ฃจํธ๋ ธ๋ ์ผ ๋, ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ๋ฃจํธ ๋ ธ๋์ธ G๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ฒ ๋๋ค.
์ถ๋ ฅ : A B C D E F G

์ดํ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ก ๋ค์ ์ค์ ํ์์ด ์งํ๋๋ค. ์ด๋ I๋ ธ๋๊ฐ ๋ฃจํธ ๋ ธ๋์ธ ๊ฒ ์ฒ๋ผ ๋๋ค.

์ดํ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ธ H๋ ธ๋๋ก์ ์ค์ ํ์์ด ์งํ๋๊ณ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก H๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ฒ ๋๋ค.
์ถ๋ ฅ : A B C D E F G H

์ดํ ๋ฃจํธ ๋ ธ๋์ธ I๋ ธ๋์ ๋ฐฉ๋ฌธ์ด ์งํ๋๊ณ ํ์์ด ์ข ๋ฃ๋๋ค.
์ถ๋ ฅ : A B C D E F G H I
์ค์ ์ํ ์์ค์ฝ๋
void inorder(Node* root){ // ์ค์์ํ
inorder(root->left); // ์ผ์ชฝ ์๋ธํธ๋ฆฌ
printf(root->data); // ๋ฃจํธ๋
ธ๋ ๋ฐฉ๋ฌธ
inorder(root->right); // ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ
}
์ถ์ฒ: https://code-lab1.tistory.com/9?category=1213002 [code_lab]
์ ์ ์ํ(Preorder Traversal)
์ ์ ์ํ๋ VLR ํ์์ด ์ด๋ฃจ์ด์ง๋ค.
์ฆ, ๋ฃจํธ ๋ ธ๋-์ผ์ชฝ ์๋ธ ํธ๋ฆฌ-์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ ์์ผ๋ก ํ์์ด ์ฌ๊ท์ ์ผ๋ก ์งํ๋๋ค.

์ค์ ์ํ์ฒ๋ผ ์ ์ ์ํ๋ ์ฌ๊ท์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค๋ ๊ฒ์ ์ดํดํ๋ฉด, ์ฝ๊ฒ ์ดํดํ ์ ์์ ๊ฒ์ด๋ค.
์์๋๋ก ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ์ค๋ช ํ์๋ฉด,
- ๋ฃจํธ ๋ ธ๋์ธ F๋ฅผ ๋ฐฉ๋ฌธ
- F์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋ B ๋ฐฉ๋ฌธ
- B์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋ A ๋ฐฉ๋ฌธ
- B์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋ D ๋ฐฉ๋ฌธ
- D์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋ C ๋ฐฉ๋ฌธ
- D์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋ E ๋ฐฉ๋ฌธ
- F์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋ G ๋ฐฉ๋ฌธ
- G์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋ I ๋ฐฉ๋ฌธ
- I์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋ H ๋ฐฉ๋ฌธ
์ถ๋ ฅ : F B A D C E G I H
์ ์ ์ํ ์์ค์ฝ๋
void preorder(Node* root){
printf(root->data); // ๋ฃจํธ๋
ธ๋ ๋ฐฉ๋ฌธ
preorder(root->left); // ์ผ์ชฝ ์๋ธํธ๋ฆฌ
preorder(root->right); // ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ
}
์ถ์ฒ: https://code-lab1.tistory.com/9?category=1213002 [code_lab]
ํ์ ์ํ(Postorder Traversal)
ํ์ ์ํ๋ LRV ํ์์ด ์ด๋ฃจ์ด์ง๋ค.
์ฆ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ-์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ-๋ฃจํธ ๋ ธ๋ ์์ผ๋ก ํ์์ด ์ฌ๊ท์ ์ผ๋ก ์งํ๋๋ค.

์์๋๋ก ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ์ค๋ช ํ์๋ฉด,
- F์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ ํ์
- B์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ ํ์
- A๋ ธ๋ ๋ฐฉ๋ฌธ
- B์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ํ์
- D์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ ํ์
- C๋ ธ๋ ๋ฐฉ๋ฌธ
- D์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ํ์
- E๋ ธ๋ ๋ฐฉ๋ฌธ
- D๋ ธ๋ ๋ฐฉ๋ฌธ
- B๋ ธ๋ ๋ฐฉ๋ฌธ
- F์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ํ์
- G์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ํ์
- I์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ ํ์
- H๋ ธ๋ ๋ฐฉ๋ฌธ
- I๋ ธ๋ ๋ฐฉ๋ฌธ
- G๋ ธ๋ ๋ฐฉ๋ฌธ
- F๋ ธ๋ ๋ฐฉ๋ฌธ
์ถ๋ ฅ : A C E D B H I G F
ํ์ ์ํ ์์ค์ฝ๋
void postorder(Node* root){
postorder(root->left); // ์ผ์ชฝ ์๋ธํธ๋ฆฌ
postorder(root->right); // ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ
printf(root->data); // ๋ฃจํธ๋
ธ๋ ๋ฐฉ๋ฌธ
}
์ถ์ฒ: https://code-lab1.tistory.com/9?category=1213002 [code_lab]
์ถ์ฒ: https://code-lab1.tistory.com/9?category=1213002 [code_lab]