• 617. 合并二叉树


    给你两棵二叉树: root1 和 root2 。

    想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。

    返回合并后的二叉树。

    注意: 合并过程必须从两个树的根节点开始。

    示例 1:

    输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]
    输出:[3,4,5,5,4,null,7]
    

    示例 2:

    输入:root1 = [1], root2 = [1,2]
    输出:[2,2]
    1. class Solution {
    2. public:
    3. TreeNode* dfs(TreeNode* root1,TreeNode* root2){
    4. //这两个if返回值很巧妙。两者只有其一,就返回这个节点。
    5. if(!root1) return root2;
    6. if(!root2) return root1;
    7. TreeNode* root = new TreeNode(0);
    8. root->val = root1->val + root2->val;
    9. root->left = dfs(root1->left,root2->left);
    10. root->right = dfs(root1->right,root2->right);
    11. return root;
    12. }
    13. TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
    14. if(!root1 && !root2) return nullptr;
    15. return dfs(root1,root2);
    16. }
    17. };
    18. //bfs
    19. class Solution {
    20. public:
    21. TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
    22. //迭代
    23. queueque;
    24. if(!root1) return root2;
    25. if(!root2) return root1;
    26. que.push(root1);
    27. que.push(root2);
    28. while(!que.empty()){
    29. TreeNode* node1 = que.front();
    30. que.pop();
    31. TreeNode* node2 = que.front();
    32. que.pop();
    33. node1->val += node2->val;
    34. if(node1->left && node2->left){
    35. que.push(node1->left);
    36. que.push(node2->left);
    37. }
    38. if(node1->right && node2->right){
    39. que.push(node1->right);
    40. que.push(node2->right);
    41. }
    42. if(!node1->left && node2->left){
    43. node1->left = node2->left;
    44. }
    45. if(!node1->right && node2->right){
    46. node1->right = node2->right;
    47. }
    48. }
    49. return root1;
    50. }
    51. };

  • 相关阅读:
    想要精通算法和SQL的成长之路 - 课程表III
    《数据库》第1章 数据库系统概论
    手机号码携号转网API接口,轻松实现用户号码流转
    【Python】绘制 对数函数
    Go 代码块与作用域,变量遮蔽问题详解
    【JVM内存区域及创建对象的过程】
    RabbitMQ —— 初窥门径
    Hadoop
    windows10下安装Mujoco 详细安装教程 + 附安装包
    python二次开发CATIA:自动出工程图
  • 原文地址:https://blog.csdn.net/qq_63819197/article/details/133524704