617. Merge Two Binary Trees Easy

这题要求合并两个二叉树,相同位置的节点数值相加,如果有不存在的情况,采用存在的那个子树。


主要思想:采用递归,两个子树同时遍历,从某一根节点开始,先考虑根。我们直接在第一个子树上修改。如果第二个子树为空,什么都不做。如果第一个为空,第二个不空,直接采用第二个子树。如果都不空,把根处的值相加,然后递归的处理左子树和右子树。


细节:递归的函数需要指针加引用

class Solution {
public:
    TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
        merge(t1, t2);
        return t1;
    }
    void merge(TreeNode *& i, TreeNode *& j)
    {
    	if(j == NULL)return ;
    	if(i == NULL && j != NULL){i = j; return ;}
    	if(i != NULL && j != NULL){
    		i->val += j->val;
    		merge(i->left, j->left);
    		merge(i->right, j-> right);
    	}
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值