MCPcopy Create free account
hub / github.com/ROUTINE-STUDY/Algorithm / Sanghoo

Class Sanghoo

LeetCode/BFS/617. Merge Two Binary Trees/Sanghoo.java:10–64  ·  view source on GitHub ↗

https://leetcode.com/problems/merge-two-binary-trees/

Source from the content-addressed store, hash-verified

8 */
9
10public class Sanghoo {
11
12 // 하나의 TreeNode를 기준으로 잡고 비교하여 검사
13 public static TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
14
15 if(root1 == null && root2 == null) return null;
16 else if(root1 != null && root2 == null) return root1;
17 else if(root1 == null && root2 != null) return root2;
18
19 Queue<TreeNode> q = new LinkedList<>();
20 Queue<TreeNode> q2 = new LinkedList<>();
21
22 // root 는 무조건 존재하므로 세팅
23 q.offer(root1);
24 q2.offer(root2);
25 root1.val += root2.val;
26
27 while(!q.isEmpty()) {
28 int size = q.size();
29
30 for(int i=0; i<size; i++) {
31 TreeNode node1 = q.poll();
32 TreeNode node2 = q2.poll();
33
34 // 둘 다 있거나 or 한 쪽만 있거나
35 // left가 두 Tree에 모두 존재하면 큐에 모두 삽입 후 left.val 세팅
36 if(node1.left != null && node2.left != null) {
37 q.offer(node1.left);
38 q2.offer(node2.left);
39
40 node1.left.val += node2.left.val;
41 } else if(node1.left == null) { // 한 쪽만 있으면 있는 쪽 세팅
42 node1.left = node2.left;
43 }
44
45 // 로직은 위와 동일함(right)
46 if(node1.right != null && node2.right != null) {
47 q.offer(node1.right);
48 q2.offer(node2.right);
49
50 node1.right.val += node2.right.val;
51 } else if(node1.right == null) {
52 node1.right = node2.right;
53 }
54 }
55 }
56
57 return root1;
58 }
59
60 public static void main(String[] args) {
61
62 }
63
64}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected