题目:
解答:
方法一:递归
我们可以对这两棵树同时进行前序遍历,并将对应的节点进行合并。在遍历时,如果两棵树的当前节点均不为空,我们就将它们的值进行相加,并对它们的左孩子和右孩子进行递归合并;如果其中有一棵树为空,那么我们返回另一颗树作为结果;如果两棵树均为空,此时返回任意一棵树均可(因为都是空)。
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 class Solution { 11 public: 12 TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) 13 { 14 if (t1 == NULL) 15 { 16 return t2; 17 } 18 19 if (t2 == NULL) 20 { 21 return t1; 22 } 23 24 t1->val += t2->val; 25 t1->left = mergeTrees(t1->left, t2->left); 26 t1->right = mergeTrees(t1->right, t2->right); 27 28 return t1; 29 } 30 };
原文:https://www.cnblogs.com/ocpc/p/12821846.html