【2024考研】题解21| #按值加成合并二叉树#

合并二叉树

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

/**傻逼题我还以为一个一个的连呢
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * @param t1 TreeNode类 
     * @param t2 TreeNode类 
     * @return TreeNode类
     */
    TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
        // write code here
        if(t1 == NULL) return t2;
        if(t2 == NULL) return t1;
        //新节点合并相同值
        TreeNode *head = new TreeNode(t1->val + t2->val);
        //同时递归遍历两颗树
        head->left = mergeTrees(t1->left, t2->left);
        head->right = mergeTrees(t1->right, t2->right);

        return head;
    }
};

算法思想:

- 使用递归的方式合并两棵二叉树。

- 如果两棵树中的对应节点都为空,则返回空。

- 如果其中一棵树的对应节点为空,则返回另一棵树的对应节点。

- 如果两棵树的对应节点都不为空,则创建一个新节点,值为两棵树对应节点的值之和,并递归合并左子树和右子树。

时间复杂度:

O(n),其中n是两棵二叉树中节点的个数较大的那棵树的节点个数。需要遍历每个节点一次。

空间复杂度:

O(n),递归调用栈的深度最大为较大的那棵树的高度,最坏情况下,两棵树都是链表,高度为n,因此空间复杂度是O(n)。

2024考研数据结构 文章被收录于专栏

本人考研刷算法题,立此专栏练习强化。

全部评论

相关推荐

02-12 00:59
已编辑
哈尔滨工业大学 产品经理
华为 软件开发岗 20.6*16薪 本科
点赞 评论 收藏
分享
02-12 17:30
已编辑
字节跳动_实习生(实习员工)
要怎么办呢牛:我觉得大厂日常实习最大的意义就是给自己背书,一个好公司的实习就像一个好学历似的,能够给自己增加一个标签,让别人觉得你可以。(至于真正实习干了啥,这个感觉并不太重要)。当然一家之言,仅供参考。另外,楼主已经很强了,实习毕业双双拿下,已经领先好多好多人了,羡慕啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务