合并二叉树 迭代(leetcode 617

leetcode系列

文章目录

  • 一、核心操作
  • 二、外层配合操作
  • 三、核心模式代码
  • 总结


一、核心操作

1.将右树的值加到左树上
2.对两棵树的子节点进行筛选,如果都有则都加进去,如果左树没有则将右数的节点指针赋给左树,如果左树有右树没有则不用管

提示:小白个人理解,如有错误敬请谅解!

二、外层配合操作

1.确保root1和root2都有值,所以当一棵树为空则返回另外一棵树

三、核心模式代码

代码如下:

class Solution {
public:
    TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
        
        TreeNode* cur1;
        TreeNode* cur2;
        queue<TreeNode*> que;
        if(!root1)return root2;
        if(!root2)return root1;
        que.push(root1);
        que.push(root2);
        while (!que.empty())
        {
            cur1=que.front();que.pop();
            cur2=que.front();que.pop();
            cur1->val+=cur2->val;
            if(cur1->left && cur2->left)
            {
                que.push(cur1->left);
                que.push(cur2->left);
            }
            if(cur1->right && cur2->right)
            {
                que.push(cur1->right);
                que.push(cur2->right);
            }
            if(!cur1->left && cur2->left)
                cur1->left=cur2->left;
            if(!cur1->right && cur2->right)
                cur1->right=cur2->right;
        }
        return root1;
    }
};

总结

1.选择返回其中一棵树,则此树没有节点的时候直接将另外一棵树的节点拿过来,因为当一个节点为空节点的时候,其子节点也肯定都是空节点;当此树有节点但是另外一棵树没有的时候就不用管,因为另外一棵树的下面也不会有子节点了

你可能感兴趣的:(leetcode,算法,职场和发展)