【树】617. 合并二叉树

题目:

解答:

方法一:递归


我们可以对这两棵树同时进行前序遍历,并将对应的节点进行合并。在遍历时,如果两棵树的当前节点均不为空,我们就将它们的值进行相加,并对它们的左孩子和右孩子进行递归合并;如果其中有一棵树为空,那么我们返回另一颗树作为结果;如果两棵树均为空,此时返回任意一棵树均可(因为都是空)。

 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 };

猜你喜欢

转载自www.cnblogs.com/ocpc/p/12821846.html