题解 | #合并二叉树#

合并二叉树

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;

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

全部评论

相关推荐

07-09 18:33
门头沟学院 Java
这么逆天每年都有人去??? 填多益网申就是大型的服从性测试
鲁大牛:辅导员在群里发了这个公司我就申了一下。网申居然要写当场开摄像头写两篇不少于三百字的作文。太逆天了
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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