Add to List 617. Merge Two Binary Trees

来源:互联网 发布:怎么加入淘宝网热卖 编辑:程序博客网 时间:2024/06/06 08:09

Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.

You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, the NOT null node will be used as the node of new tree.

Example 1:

Input: Tree 1                     Tree 2                            1                         2                                      / \                       / \                                    3   2                     1   3                               /                           \   \                            5                             4   7                  Output: Merged tree:     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) return t2;        if(t2==NULL) return t1;        t1->val += t2->val;        t1->left = mergeTrees(t1->left, t2->left);        t1->right = mergeTrees(t1->right, t2->right);        return t1;    }};
原创粉丝点击