๋ฌธ์
https://leetcode.com/problems/minimum-depth-of-binary-tree/description/
์ฃผ์ด์ง ์ด์งํธ๋ฆฌ์์ ํธ๋ฆฌ์ ์ต์ ๊น์ด๋ฅผ ๊ตฌํ์ฌ๋ผ.
์ต์ ๊น์ด๋ ๋ฃจํธ ๋ ธ๋๋ถํฐ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฆฌํ ๋ ธ๋๊น์ง ๋ด๋ ค๊ฐ๋ ์ต๋จ ๊ฑฐ๋ฆฌ์ ์๋ ๋ ธ๋์ ์์ด๋ค.
Note: ๋ฆฌํ ๋ ธ๋๋ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค.
ํ์ด
1. BFS - ๋๋น ์ฐ์ ํ์
fun minDepth(root: TreeNode?): Int {
if(root == null) return 0
val q = ArrayDeque<TreeNode>()
q.add(root)
var depth = 1
while (q.isNotEmpty()) {
val curSize = q.size
repeat(curSize) {
val curNode = q.poll()
if (curNode.left == null && curNode.right == null) return depth
curNode.left?.let { q.add(it) }
curNode.right?.let { q.add(it) }
}
depth++
}
return depth
}
BFS ๊ตฌํํ ๋, ์ฝํ๋ฆฐ ์ธ์ด์ ํน์ง์ ์ด์ฉํด์ ์ฝ๊ฒ ๊ตฌํ ์ ์์๋ค.
ํ๊ฐ ๋น์ด์๋์ง ํ์ธํ๋ while๋ฌธ๊ณผ ํจ๊ป repeat๋ฅผ ์ฌ์ฉํ๋ฉด,
1. ๋์ผํ ๊น์ด์ ๋ ธ๋ ์๋งํผ ๋๊ณ (repeat)
2. depth๋ฅผ ์ฆ๊ฐ์ํจ๋ค์
3. ํด๋น repeat๋ฌธ๋์ ์์ธ ํ์ ์ฌ์ด์ฆ๋งํผ ๋ค์ ๋๋ฉด์
๊ณ์ํด์ ๋์ผํ ๊น์ด์ ๋ ธ๋ ํ์์ repeat๋ฌธ ์์์ ํด๊ฒฐํ ์ ์๋ค!
depth๋ฅผ ํ์ ๋ฐ๋ก ์ ์ฅํ์ง ์์๋ ๋๋ค๋ ๋ง!
์๊ฐ ๋ณต์ก๋: O(n), ๊ณต๊ฐ ๋ณต์ก๋: O(n)
https://github.com/jeongum/algorithm/blob/master/LT_111_MinimumDepthofBinaryTree.kt
'๐ ์๊ณ ๋ฆฌ์ฆ > Tree' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2233๋ฒ: ์ฌ๊ณผ๋๋ฌด (Java) (0) | 2022.03.16 |
---|---|
[๋ฐฑ์ค] 4933๋ฒ ๋ดํด์ ์ฌ๊ณผ (Java) (0) | 2022.02.21 |