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/