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
}
}