LeetCode 617: Merge Two Binary Trees

문제 자체는 크게 어려울 게 없다. 두 개의 바이너리 트리를 겹친다고 생각하고, 겹치는 두 노드가 있을 경우 두 노드의 값만 더해주면 된다. 트리 문제여서 간단하게 재귀로 해결하였는데, 나는 일일히 비교하였지만 다른 사람의 코드를 보다가 시간을 줄일 수 있는 좋은 코드를 찾았다.

class Solution {
public:
    TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
            if(t1==NULL&&t2==NULL)
                return NULL;
            else if(t1&&t2==NULL)
                return t1;
            else if(t1==NULL&&t2)
                return t2;
            else{
                t1->val=t1->val+t2->val;
            }
            t1->left = mergeTrees(t1->left,t2->left);
            t1->right = mergeTrees(t1->right,t2->right);
            return t1;
            
    }
};

즉, 다른 하나의 트리는 노드가 있지만 다른 트리는 같은 위치에 노드가 없는 경우, 그냥 노드가 있는 트리의 해당 노드를 반환해주기만 하면 된다. 이렇게 하면 재귀 횟수를 줄일 수 있다.