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上
浙公网安备 33010602011771号