์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ฐ๋ถํฌdb
- ์ฝ๋ฉํ ์คํธ์ค๋น
- ์ค๋ ๋
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- ๋ฐ์ดํฐ ์ ์ก
- ํ๋ ์ ๊ตฌ์กฐ
- til
- leetcode
- reducible
- ํ ํฐ ๋ฒ์ค
- ์ค๋ฅ์ ์ด
- ์์๋ฒํธ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- 99ํด๋ฝ
- ์ฃผ๊ธฐ์ ํธ
- ๋น์ฃผ๊ธฐ์ ํธ
- IEEE 802
- mariadb
- xv6
- ์ค๋ธ์
- ํญํด99
- tcp ์ธ๊ทธ๋จผํธ
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ๋ฐ์์ทจ์
- well known ํฌํธ
- git merge
- i-type
- ์ค๋ฅ๊ฒ์ถ
- tcp ํ๋กํ ์ฝ
- ํ๋ก์ด๋์์
- Today
- Total
Unfazedโ๏ธ๐ฏ
[Java] ํธ๋ฆฌ, ์ฌ๊ท | LeetCode 226 Invert Binary Tree (๊ท๋ฉ์ ์ผ๋ก ์๊ฐํ๊ธฐ) ๋ณธ๋ฌธ
[Java] ํธ๋ฆฌ, ์ฌ๊ท | LeetCode 226 Invert Binary Tree (๊ท๋ฉ์ ์ผ๋ก ์๊ฐํ๊ธฐ)
9taetae9 2025. 2. 12. 13:29๋ฌธ์ ๋งํฌ
๋ฌธ์ ์ ์ถ๋ ฅ
- ์ ๋ ฅ: ์ด์ง ํธ๋ฆฌ์ ๋ฃจํธ(root) ๋ ธ๋
- ์ถ๋ ฅ: ๊ฐ ๋ ธ๋์ ์์ ์ข์ฐ๋ฅผ ๋ค๋ฐ๊พผ ์ด์ง ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋
๋ชจ๋ ๋ ธ๋์ ์ผ์ชฝ ์์๊ณผ ์ค๋ฅธ์ชฝ ์์์ ์๋ก ๊ตํํ๋ฉด ๋๋ ๋ฌธ์ ๋ค.
๋จ์ํ๊ฒ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ํํ๋ฉด์ ํด๋น ๋ ธ๋์ ์์๋ค์ swapํ๋ฉด ๋๋๋ฐ, ๋ฌธ์ ๋ฅผ ํธ๋ ๊ณผ์ ์์ ์ฌ๊ท์ ์ผ๋ก ๊ณ์ swapํด์ฃผ๋ฉด ๋๊ฒ ๋ค๋ ๊ฒ์ ์์์ง๋ง ์ฌ๊ท ํธ์ถ ์์๋ฅผ ๊น๊ฒ ์์ํ๋ฉด์ ๊ตฌํํ๋๋ฐ ์ฝ์ง์ ํด์ ๋๋ ๋ฐ๋ฅผ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
์์
4
/ \
2 7
/ \ / \
1 3 6 9
์ฌ๊ท ํธ์ถ ์์ (๊น์ด ์ฐ์ ํ์)
1. invertTree(4) ํธ์ถ
ํ์ฌ: 4
left = 2, right = 7
๊ตํ ํ: 4์ left←7, right←2
2. invertTree(7) ํธ์ถ (4์ ์๋ก์ด left)
ํ์ฌ: 7
left = 6, right = 9
๊ตํ ํ: 7์ left←9, right←6
3. invertTree(9) ํธ์ถ (7์ ์๋ก์ด left)
ํ์ฌ: 9
left = null, right = null
๋ณํ ์์ด ๋ฐํ
4. invertTree(6) ํธ์ถ (7์ ์๋ก์ด right)
ํ์ฌ: 6
left = null, right = null
๋ณํ ์์ด ๋ฐํ
5. invertTree(2) ํธ์ถ (4์ ์๋ก์ด right)
ํ์ฌ: 2
left = 1, right = 3
๊ตํ ํ: 2์ left←3, right←1
6. invertTree(3) ํธ์ถ (2์ ์๋ก์ด left)
ํ์ฌ: 3
left = null, right = null
๋ณํ ์์ด ๋ฐํ
7. invertTree(1) ํธ์ถ (2์ ์๋ก์ด right)
ํ์ฌ: 1
left = null, right = null
๋ณํ ์์ด ๋ฐํ
์ต์ข ๊ฒฐ๊ณผ
4
/ \
7 2
/ \ / \
9 6 3 1
์์ ๊ณผ์ ์ฒ๋ผ ์ฌ๊ท์ ์ผ๋ก ํธ์ถ๋๋ ๊ฒ์ ๋ง๋ค.
ํ์ง๋ง ์ฌ๊ท ๋ฌธ์ ๋ฅผ ํ ๋๋ง๋ค ์ด๋ ๊ฒ ๋ชจ๋ ํธ์ถ ๊ณผ์ ์ ๋ ์ฌ๋ฆฌ๋ ๊ฒ์ด ์คํ๋ ค ์๊ฐ์ ๋ณต์กํ๊ฒ ๋ง๋ค๊ณ ์์๋ค.
์ ๋ต ์ฝ๋๋ฅผ ๋ณด์.
public TreeNode invertTree(TreeNode root) {
if (root == null) return null;
// 1. ์์ ๋ณ์์ ์ ์ฅ
TreeNode temp = root.left;
// 2. ๊ตํ
root.left = root.right;
root.right = temp;
// 3. ์์ ๋
ธ๋๋ค๋ ๊ฐ์ ์์
์ํ
invertTree(root.left);
invertTree(root.right);
return root;
}
์ ๋ฌธ์ ์ ํต์ฌ์ "๊ฐ ๋ ธ๋์์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์์์ ๊ตํํ๊ธฐ"์ด๋ค.
invertTree(TreeNode root)๊ฐ ์ง๊ธ ๋น์ฅ ํ ์ผ์ root ๋ ธ๋์ ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ์์๋ง ๋ฐ๊พธ๋๊ฒ ์ ๋ถ๋ค.
root ๋ ธ๋์ ์์๋ค์ swapํ ๋ค,
invertTree(์ผ์ชฝ ์์ ๋ ธ๋), invertTree(์ค๋ฅธ์ชฝ ์์ ๋ ธ๋)์ ํธ์ถํ๋ฉด,
๋ถ๋ชจ๊ฐ ํ๋ ์ผ(์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์์์ ๊ตํํ๊ธฐ)์ ๋์ผํ๊ฒ ์ํํ๊ฒ ํ๋ ๊ฒ์ด๋ค.
invertTree(ํ์ฌ ๋ ธ๋) ๋ฉ์๋ ์ ์ฅ์์ ์๊ฐํด๋ณด๋ฉด,
- "๋ด ํ ์ผ์ ํ์ฌ ๋ ธ๋์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์์์ ๊ตํํ๋ ๊ฒ๋ฟ์ด๋ค."
- ๋ด ์ผ๋ง ๋ง์น ๋ค, invertTree(์ผ์ชฝ ์์ ๋ ธ๋), invertTree(์ค๋ฅธ์ชฝ ์์ ๋ ธ๋)์ ํธ์ถํด ์์๋ค์๊ฒ ๊ฐ์ ์ผ์ ์ํค์.
- "์์ ๋ ธ๋๋ค๋ ๊ฐ์ ์์์ ๊ฐ์ ์์ ์ ํ ๊ฒ์ด๋ค" => ์ด ๊ณผ์ ์ ๋๋ฌด ๊น๊ฒ ์๊ฐํ์ง ๋ง์.
๋ฐ๋ผ์ ์ฌ๊ท์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ ๋๋, ์ข ๋ฃ์กฐ๊ฑด(base-condition)๊ณผ ํต์ฌ ๋ก์ง(ํด๋น ๋ฌธ์ ์์๋ ์์ ๊ตํ ๊ณผ์ )๋ง ์ ํํ๊ฒ ๊ตฌํํ๊ณ
์ฌ๋ฐ๋ฅด๊ฒ ๋ค์ ์ผํ ์ฃผ์ฒด๋ง ์ ํํ ๊ณจ๋ผ์คฌ๋ค๋ฉด,
์ด์ด์ ํธ์ถ๋ ์ฃผ์ฒด๊ฐ ๊ทธ๋ค์ ์ญํ ์ ๋์ผํ๊ฒ ์ ์ํํ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์.
๋๋ฏธ๋ ธ๋ ์ฒซ๋ฒ์งธ ๋๋ฏธ๋ ธ๋ง ๋ฐ๋ฉด ๋ชจ๋ ๋๋ฏธ๋ ธ๊ฐ ๋์ด์ง ๊ฒ์ด๋ผ๊ณ ๋น์ฐํ๊ฒ ๋ฏฟ๋ ๊ฒ๊ณผ ๋์ผํ๋ค.
์ฆ, ์ฐ๋ฆฌ๋ ๋ฐ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๋ฐํน๋ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์์์ ๊ท๋ฉ์ ์ผ๋ก ์ฌ๊ณ ํ๋ผ ํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋งฅ๋ฝ์ธ ๊ฒ ๊ฐ์, ํน์ ์ฌ๊ท ๋ฌธ์ ์ ์ด๋ ค์์ ๋๋๋ค๋ฉด ์๋ ๊ฐ์๋ฅผ ๋ค์ด๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค.
https://youtu.be/8vDDJm5EewM?si=H2hO9hU-jxs-5tu9
'๋ฌธ์ ํด๊ฒฐ (PS) > ์ฝํ TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์ ๋ ฌ, ๊ทธ๋ฆฌ๋ | ๋ฐฑ์ค 1083 ์ํธ (0) | 2024.11.17 |
---|---|
[Java] ๋ค์ต์คํธ๋ผ, BFS | ๋ฐฑ์ค 2665 ๋ฏธ๋ก๋ง๋ค๊ธฐ (0) | 2024.11.11 |
[Java] ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ์ ๋ ฌ | ๋ฐฑ์ค 1461 ๋์๊ด (0) | 2024.11.07 |
[Java] ํฌํฌ์ธํฐ | ๋ฐฑ์ค 1253 ์ข๋ค (0) | 2024.11.07 |
[Java] ํธ๋ฆฌ, ๊ตฌํ | ํ๋ก๊ทธ๋๋จธ์ค ๋ค๋จ๊ณ ์นซ์ ํ๋งค (0) | 2024.11.06 |