[알고리즘] Leetcode_617_Merge_Two_Binary_Trees

jeongjwon·2023년 4월 26일
0

알고리즘

목록 보기
41/48

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;

    
    
}

}

0개의 댓글