๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

[Java] ํŠธ๋ฆฌ, ์žฌ๊ท€ | LeetCode 226 Invert Binary Tree (๊ท€๋‚ฉ์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ธฐ) ๋ณธ๋ฌธ

๋ฌธ์ œ ํ•ด๊ฒฐ (PS)/์ฝ”ํ…Œ TIL

[Java] ํŠธ๋ฆฌ, ์žฌ๊ท€ | LeetCode 226 Invert Binary Tree (๊ท€๋‚ฉ์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ธฐ)

9taetae9 2025. 2. 12. 13:29
728x90

๋ฌธ์ œ ๋งํฌ

https://leetcode.com/problems/invert-binary-tree/description/?envType=study-plan-v2&envId=top-interview-150

 

๋ฌธ์ œ ์ž…์ถœ๋ ฅ

  • ์ž…๋ ฅ: ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ(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

 

728x90