๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Tree

[LeetCode] 111. MinimumDepthofBinaryTree. (ํ•ด์„, Kotlin ํ’€์ด)

์ ์ด 2023. 7. 10. 22:38
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

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

 

๋ฐ˜์‘ํ˜•