Daily LeetCode Challenge - 101. Symmetric Tree

Min Young Kim·2023년 3월 13일
0

algorithm

목록 보기
92/198

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)
    }
}
profile
길을 찾는 개발자

0개의 댓글