1. 程式人生 > >【LeetCode】617. 合併二叉樹

【LeetCode】617. 合併二叉樹

給定兩個二叉樹,想象當你將它們中的一個覆蓋到另一個上時,兩個二叉樹的一些節點便會重疊。

你需要將他們合併為一個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 NULL 的節點將直接作為新二叉樹的節點。

示例 1:

輸入:

     Tree 1                   Tree 2               
     1                          2                              
     / \                       / \                            
    3   2                     1   3                        
   /                           \   \                      
  5                             4   7  

輸出:
合併後的樹:

     3
    / \
   4   5
  / \   \ 
 5   4   7

注意: 合併必須從兩個樹的根節點開始。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
        if(t1 == NULL && t2 == NULL) return NULL;
        else if(t1 == NULL) return t2;
        else if(t2 == NULL) return t1;
        else 
        {
            t1->val += t2->val;
            t1->left = mergeTrees(t1->left, t2->left);
            t1->right = mergeTrees(t1->right, t2->right);
            return t1;
        }
    }
};