1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 
11 static int wing=[]()
12 {
13     std::ios::sync_with_stdio(false);
14     cin.tie(NULL);
15     return 0;
16 }();
17 
18 class Solution 
19 {
20 public:
21     TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) 
22     {
23         merge(t1,t2);
24         return t1;
25     }
26     
27     void merge(TreeNode* &t1,TreeNode* &t2)
28     {
29         if(t2==NULL)
30             return;
31         else if(t1!=NULL)
32             t1->val=t1->val+t2->val;
33         else
34         {
35             t1=t2;
36             return;
37         }
38         merge(t1->left,t2->left);
39         merge(t1->right,t2->right);
40     }
41 };

递归,合并函数中,将t2合并至t1,在t1,t2上各一个指针,同步移动,对于每个节点,有3种情况

1,t2为空,此时无论t1为空与否,都不需要任何操作,

2,t2不为空且t1为空,此时合并操作应将t2传给t1

3,t2不为空且t1不为空,此时合并操作应将t2的节点值加在t1上

posted on 2018-06-06 16:10  高数考了59  阅读(115)  评论(0)    收藏  举报