Problem
Solve
- 또 다시 재귀다! 그치만 이번 전달인자는 두 개이다.
- 그렇다면 base 는 세 가지로 나눌 수 있다.
- root1 과 root2 둘 다 null 인 경우 : null 반환
- root1 만 null 인 경우 : 아직 root2 가 존재하기 때문에 그대로 root2 반환
- root2 만 null 인 경우 : 아직 root1 이 존재하기 때문에 그대로 root1 반환
- 최종 반환값은 원래 새로운 TreeNode 를 생성하여 추가해주려고 했는데, 그냥 기존의 root1값에 roo2값을 더해주는 것으로 했다. (root1.val += root2.val)
- 재귀하는 부분은 항상 트리의 왼쪽, 오른쪽으로 가주어야 한다.
- 이때까지 푼 문제는 루트에서 리프로 전진했다가 다시 루트로 후진하는 경로였는데, 이 문제는 값만 변경해주면 되기 때문에 루트에서 계산을 바로바로 할 수 있다. 다만, null 이냐 아니냐를 따져 재귀의 base 부분을 다뤄준다.
```java
class Solution {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if(root1 == null && root2 == null) return null;
if(root1 == null) return root2;
if(root2 == null) return root1;
root1.val += root2.val;
root1.left = mergeTrees(root1.left, root2.left);
root1.right = mergeTrees(root1.right, root2.right);
return root1;
}
}