[코딩] 2개의 노드 비교

2개의 노드의 값이 같은지 비교하는 코드를 짜보자.
null 처리를 포함한 간결한 코드 작성 방법 2가지를 적는다.

1. And-Or-Value

func compare(l, r *TreeNode) bool {
    // 2개 모두 nil 이면 같다
    if l == nil && r == nil { 
        return true
    }
    // 위에서 2개 모두가 nil 인 경우를 이미 처리했으므로
    // 하나만 nil인 경우에 해당하므로 같지 않다.
    if l == nil || r == nil {
        return false
    }

    // 최종 값 비교
    return l.Val == r.Val
}

2. Or-Value

func compare(l, r *TreeNode) bool {
    // 하나라도 nil인 경우
    if l == nil || r == nil { 
        // 모두 nil인 경우만 같다.
        return l == r
    }

    // 최종 값 비교
    return l.Val == r.Val
}

주의

반복문 안에서 사용하는 경우, return이 아닌 continue를 할 수도 있는데 이런 경우에는 And-Or-Value를 사용하여 각 케이스별로 처리해야 한다.
예시문제: https://leetcode.com/problems/symmetric-tree/

 
comments powered by Disqus