给了两个根节点,那不麻烦了。直接把第二棵树加到第一棵上面返回就好了。创建一个递归函数,递归合并就好了。
若第二棵子树为空,那加出来的结果和第一棵树相同,故直接返回即可。
若第二棵不为空,但第一棵为空,加出来的结果和第二棵相同,故直接将该点指向第二棵就行了。
两棵都不为空,则根节点相加,递归他们的孩子即可。
AC代码:
1 void Create(TreeNode *&root, TreeNode *&an) 2 { 3 if (an == nullptr) 4 return; 5 if (root == nullptr) 6 { 7 root = an; 8 return; 9 } 10 else 11 { 12 root->val += an->val; 13 } 14 Create(root->left, an->left); 15 Create(root->right, an->right); 16 } 17 TreeNode *mergeTrees(TreeNode *root1, TreeNode *root2) 18 { 19 Create(root1, root2); 20 return root1; 21 }