美文网首页
【3对1错2】Merge Two Binary Trees

【3对1错2】Merge Two Binary Trees

作者: 7ccc099f4608 | 来源:发表于2018-12-10 22:11 被阅读0次

https://leetcode.com/problems/merge-two-binary-trees/

日期 是否一次通过 comment
2018-12-10 22:08 递归一次;遍历两次 印象不深,遍历仍旧在机械记忆
2018-12-11 21:09 一次通过 有点晕,直接机械记忆
2018-12-12 20:40 一次通过 机械记忆
2018-12-21 17:18 一次通过,但印象不深 摸索着写完的,脑子里感觉和其他题有点类似
image.png

(来源:https://leetcode.com/problems/merge-two-binary-trees/

递归

class Solution {
    public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
        if(t1 == null) {
            return t2;
        }
        if(t2 == null) {
            return t1;
        }
        
        t1.val +=  t2.val;
        
        t1.left = mergeTrees(t1.left, t2.left);
        t1.right = mergeTrees(t1.right, t2.right);
        
        return t1;
    }
}

遍历

class Solution {
    public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
        if(t1 == null) {
            return t2;
        }
        
        Queue<TreeNode[]> nodeQ = new LinkedList<>();
        nodeQ.offer(new TreeNode[]{t1, t2});
        while(!nodeQ.isEmpty()) {
            TreeNode[] nodeArray = nodeQ.poll();
            if(nodeArray[0] == null || nodeArray[1] == null) {
                continue;
            }
            nodeArray[0].val += nodeArray[1].val;
            
            if(nodeArray[0].left == null) {
                nodeArray[0].left = nodeArray[1].left;
            } else {
                nodeQ.offer(new TreeNode[]{nodeArray[0].left, nodeArray[1].left});
            }
            
            if(nodeArray[0].right == null) {
                nodeArray[0].right = nodeArray[1].right;
            } else {
                nodeQ.offer(new TreeNode[]{nodeArray[0].right, nodeArray[1].right});
            }
        }
        
        return t1;
    }
}

相关文章

网友评论

      本文标题:【3对1错2】Merge Two Binary Trees

      本文链接:https://www.haomeiwen.com/subject/bhhjhqtx.html