Skip to content

Commit f574a61

Browse files
author
แ„‹แ…ตแ„‹แ…งแ†ซแ„‰แ…ฎ
committed
invert binary tree
1 parent 356e622 commit f574a61

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package leetcode_study
2+
3+
/*
4+
* binary tree ์ขŒ์šฐ ๋ฒˆ๊ฒฝ ๋ฌธ์ œ
5+
* ์žฌ๊ท€๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ ํ•ด๊ฒฐ
6+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
7+
* -> n๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธ
8+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n) ํ˜น์€ O(log n)
9+
* -> ์žฌ๊ท€ ์‚ฌ์šฉ ์‹œ ์Šคํƒ์— ์Œ“์ž„
10+
* -> ๊ท ํ˜•์žกํžŒ binary tree์˜ ๊ฒฝ์šฐ O(log n)์˜ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ(์ตœ์•…์˜ ๊ฒฝ์šฐ) O(n)์˜ ๊ณต๊ฐ„ ๋ณต์žก๋„ ์š”๊ตฌ
11+
* */
12+
fun invertTree(root: TreeNode?): TreeNode? {
13+
recursiveNode(root)
14+
return root
15+
}
16+
17+
fun recursiveNode(parentNode: TreeNode?) {
18+
if (parentNode == null) return
19+
20+
swapNode(parentNode) // ํ˜„์žฌ ๋…ธ๋“œ์˜ left์™€ right๋ฅผ ๊ตํ™˜
21+
recursiveNode(parentNode.left) // ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ํƒ์ƒ‰
22+
recursiveNode(parentNode.right) // ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ํƒ์ƒ‰
23+
}
24+
25+
fun swapNode(parentNode: TreeNode?) {
26+
if (parentNode == null) return
27+
28+
val temp = parentNode.left
29+
parentNode.left = parentNode.right
30+
parentNode.right = temp
31+
}
32+
33+
class TreeNode(var `val`: Int) {
34+
var left: TreeNode? = null
35+
var right: TreeNode? = null
36+
}

0 commit comments

Comments
ย (0)