Problem From.
https://leetcode.com/problems/symmetric-tree/
오늘 문제는 tree 가 주어졌을때, 그 tree 가 root node 를 기준으로 대칭을 이루는지 보는 문제였다.
이 문제는 recursion 으로 풀 수 있었는데, 하나의 노드에서 왼쪽과 오른쪽 노드를 동시에 검사하며, 같다면 그 왼쪽과 오른쪽 노드를 다시 넣는 식으로 문제를 풀 수 있었다.
/**
* 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 isSymmetric(root: TreeNode?): Boolean {
if (root == null) return true
return isSubSymmetric(root.left, root.right)
}
private fun isSubSymmetric(left: TreeNode?, right: TreeNode?): Boolean {
if (left == null && right == null) return true
if (left?.`val` != right?.`val`) return false
return isSubSymmetric(left?.left, right?.right) && isSubSymmetric(left?.right, right?.left)
}
}