欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

leadcode的Hot100系列--617. 合并二叉树

程序员文章站 2022-04-14 18:41:07
合并,就是两个树的结构交集部分,数据相加,否则,取非空部分。 所以,这里相当于是对两棵树同时遍历: 如果两棵树节点都不为空,则数据相加, 否则,直接指针把不为空的节点复制过来。 注:这里没有申请内存,而直接对原有的树进行改造,这样可以节省申请内存的时间,且节省一些内存。 ......

合并,就是两个树的结构交集部分,数据相加,否则,取非空部分。
所以,这里相当于是对两棵树同时遍历:
如果两棵树节点都不为空,则数据相加,
否则,直接指针把不为空的节点复制过来。

注:这里没有申请内存,而直接对原有的树进行改造,这样可以节省申请内存的时间,且节省一些内存。

struct treenode* mergetrees(struct treenode* t1, struct treenode* t2){
    
    struct treenode *ptemp = null;
    
    if ((null == t1) && (null == t2))
        return null;
    else if ((null != t1) && (null != t2))
    {
        ptemp = t1;
        ptemp->val = t1->val + t2->val;
    }
    else if (null != t1)
    {
        return t1;
    }
    else if (null != t2)
    {
        return t2;
    }
    ptemp->left = mergetrees(t1->left, t2->left);
    ptemp->right = mergetrees(t1->right, t2->right);

    return ptemp;