力扣简617 合并二叉树

一遍过欸 但是没捋清楚 所以写了好半天

不过运行速度很差 我发现我只会广度优先

这题深度憨简单

 

 

 

class Solution {
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        if(root1==null) {
            return root2;
        }
        if(root2==null) {
            return root1;
        } 

        TreeNode root11=new TreeNode(); 
        TreeNode root22=new TreeNode();
        Queue<TreeNode> queue1=new LinkedList<TreeNode>();
        Queue<TreeNode> queue2=new LinkedList<TreeNode>();
        
        queue1.add(root1);
        queue2.add(root2);
        root1.val=root1.val+root2.val;
        
        //只要有一个不为0就得往里加
        while(!queue1.isEmpty()||!queue2.isEmpty()) {
            root11=queue1.poll();
            root22=queue2.poll();
            
            if(root11.left!=null&&root22.left!=null) {
                queue1.add(root11.left);
                queue2.add(root22.left);
                root11.left.val=root11.left.val+root22.left.val;
            }
            else if(root22.left!=null&&root11.left==null) {
                root11.left=root22.left;
            }
            if(root11.right!=null&&root22.right!=null) {
                queue1.add(root11.right);
                queue2.add(root22.right);
                root11.right.val=root11.right.val+root22.right.val;
            }            
            else if(root22.right!=null&&root11.right==null) {
                root11.right=root22.right;
            }
        }
        return root1;
    }
}

 

posted @ 2023-03-08 09:45  Ssshiny  阅读(13)  评论(0)    收藏  举报