题解 | #合并二叉树#

合并二叉树

https://www.nowcoder.com/practice/7298353c24cc42e3bd5f0e0bd3d1d759

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param t1 TreeNode类 
     * @param t2 TreeNode类 
     * @return TreeNode类
     */
    TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
        // write code here
        //使用后序遍历的方式解决此题

        //递归出口
        if(t1==nullptr)//如果t1为空了,直接返回t2,t2下面的结点也不用处理了
            return t2;
        if(t2==nullptr)
            return t1;
        

        //递归处理左右结点
        TreeNode* leftNode=mergeTrees(t1->left, t2->left);
        TreeNode* rightNode=mergeTrees(t1->right,t2->right);

        //左右孩子已经遍历合并完成
        //合并当前结点
        t1->val+=t2->val;

        //连接到t1上
        t1->left=leftNode;
        t1->right=rightNode;


        return t1;



        
    }
};

此题使用后序遍历的方法解决,在思路上前序遍历也是可以的,相当于先合并根结点,在递归合并他的左右子树。

前序遍历代码

t1->val+=t2->val;

TreeNode* leftNode=mergeTrees(t1->left, t2->left);

TreeNode* rightNode=mergeTrees(t1->right,t2->right);

t1->left=leftNode;

t1->right=rightNode;

无论是那种遍历只要保证递归出口正确,子问题操作与原问题相同即可

全部评论

相关推荐

03-12 09:57
软件测试
程序员小白条:1)确定测试,测开的方向,技术栈不能写这么少 2)课程凑数的,不是99,100分没必要写 3)实习经历这块要有突出的不是劳动性质的亮点,自己设计的什么方案,什么自动化?什么提效工具?不是一些边角料,人云亦云的东西,没吸引力 4) 校园经历纯没用 5)尽量少写减分项
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
03-08 18:11
门头沟学院 Java
Java抽象小篮子:海投就完事了,简历没什么问题,最大问题是学历
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务