lc.617 合并二叉树
![[Pasted image 20241128201742.png]]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
public:
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
//如果都为空
if(!root1&&!root2){
return nullptr;
}
//如果都不为空,说明重叠
if(root1&&root2){
root1->val+=root2->val;
}
//1不空2空
if(root1&&!root2){
return root1;
}
//2不空1空
if(!root1&&root2){
TreeNode* p=new TreeNode(root2->val);
root1=p;//建立一个新结点用于返回(用于挂到上一层根节点)
}
root1->left=mergeTrees(root1->left,root2->left);
root1->right=mergeTrees(root1->right,root2->right);
return root1;//root1为最终返回树,"挂"(return)到上一层
}
};
思路:
还是按照这个写二叉树递归的传统思路:
![[Pasted image 20241128202052.png|300]]
==重点==
- 把root1作为返回值
- 2不空1空时建立一个新结点用于返回(用于挂到上一层根节点)
root1->left=mergeTrees(root1->left,root2->left);
前面这个root1->left=
This post is licensed under CC BY 4.0 by the author.