Post

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]]

==重点==

  1. 把root1作为返回值
  2. 2不空1空时建立一个新结点用于返回(用于挂到上一层根节点)
  3. root1->left=mergeTrees(root1->left,root2->left);前面这个root1->left=
This post is licensed under CC BY 4.0 by the author.