Daily LeetCode Challenge - 104. Maximum Depth of Binary Tree

Min Young Kim·2023년 2월 16일
0

algorithm

목록 보기
75/198

Problem From.

https://leetcode.com/problems/maximum-depth-of-binary-tree/

오늘 문제는 tree 의 max depth 를 구하는 문제였다.

BFS 를 활용해서 한번 queue 를 검사할때, queue 의 크기만큼만 검사하도록 하여,
각 depth 에 있는 node 를 쭉 검사할 수 있도록 하였다.

/**
 * Example:
 * var ti = TreeNode(5)
 * var v = ti.`val`
 * Definition for a binary tree node.
 * class TreeNode(var `val`: Int) {
 *     var left: TreeNode? = null
 *     var right: TreeNode? = null
 * }
 */
class Solution {
    fun maxDepth(root: TreeNode?): Int {
        
        root ?: return 0
        
        var depth = 0
        val queue = LinkedList<TreeNode>()
        
        queue.add(root!!)
        
        while(queue.isNotEmpty()) {
            
            for(i in 0 until queue.size) {
                val node = queue.poll()
                
                node.left?.let {
                    queue.add(it)
                }
            
                node.right?.let {
                    queue.add(it)
                }
            }
            depth += 1   
        }
        return depth
    }
}

그랬는데 재귀를 사용한 더 좋은 풀이가 있었다.

class Solution {
    fun maxDepth(root: TreeNode?): Int {
        return if (root == null) 0 else maxOf(maxDepth(root!!.left), maxDepth(root!!.right)) + 1
    }
}
profile
길을 찾는 개발자

0개의 댓글