2019/12/07

LeetCode_617

题目描述:合并二叉树

我的解法:两个节点均有值,则值相加;仅有一个值,则为该值;否则为空;

     递归实现:返回值为节点,终止条件为二者节点均为空,递归条件为res -> left = mergeTree(t1->left, t2->left); res->right = mergeTree(t1->right, t2->right); 

部分代码:

    TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
        if (t1 == NULL && t2==NULL)
            return NULL;
        else if (t1==NULL && t2!=NULL)
            return t2;
        else if (t1!=NULL && t2 == NULL)
            return t1;
        else{
            t1->val = t1->val + t2->val;
            t1->left = mergeTrees(t1->left,t2->left);
            t1->right = mergeTrees(t1->right,t2->right);
            return t1;
        }
    }

题后反思:解法与官方大致同,表扬哦。(第一个if条件有点弱智484)

        时间复杂度:O(N),其中 N 是两棵树中节点个数的较小值。

     空间复杂度:O(N),在最坏情况下,会递归 N 层,需要 O(N) 的栈空间

今天发现很多憨批都脱单了啊,什么时候到俺啊<?.?>

猜你喜欢

转载自www.cnblogs.com/Jovesun/p/12003785.html