[leetcode 101] Symmetric Tree

101. Symmetric Tree

https://leetcode.com/problems/symmetric-tree/solution/

해결 과정

트리가 대칭이라는 것은 왼쪽 서브트리와 오른쪽 서브트리가 대칭을 이룬다는 것이다.

  1. 왼쪽 서브트리의 루트와 오른쪽 서브트리의 루트 값이 동일하며
  2. 왼쪽서브트리.left오른쪽서브트리.right, 그리고 왼쪽서브트리.rigit오른쪽버스트리.left 가 대칭을 이루는지 검사했다.

코드

fun isSymmetric(root: TreeNode?): Boolean {
    return isSymmetric(root?.left, root?.right)
}

private fun isSymmetric(left: TreeNode?, right: TreeNode?) : Boolean {
    if(null == left && null == right) return true
    if(null == left || null == right) return false

    return left.`val` == right.`val` && isSymmetric(left.left, right.right)  && isSymmetric(left.right, right.left)
}

배운 점

  • 재귀(recursion) 대신에 Queue 를 이용하여 문제를 풀 수도 있다. (해설)

Leave a comment