LeetCode撸代码之:617. Merge Two Binary Trees

递归方案:

 

非递归方案:

class Solution {
    /**
     * 将两个树的对应节点捆绑起来,如果某一个节点在树1中空,而在树2中为非空则直接将 该节点赋值给树1
     */
    static class Entry {
        public Entry(TreeNode tree1, TreeNode tree2) {
            this.tree1 = tree1;
            this.tree2 = tree2;
        }

        public TreeNode tree1;
        public TreeNode tree2;

    }

    public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
        if (Objects.isNull(t1)) {
            return t2;
        } else if (Objects.isNull(t2)) {
            return t1;
        }
        Entry en = new Entry(t1, t2);
        Stack<Entry> s = new Stack<>();
        s.push(en);
        while (!s.isEmpty()) {
            en = s.pop();
            //
            if (Objects.isNull(en.tree1) || Objects.isNull(en.tree2)) {
                continue;
            }
            en.tree1.val = en.tree1.val + en.tree2.val;
            //如果tree1树为空的话直接将树2该节点赋值给树1中即可,然后忽略继续处理
            if (en.tree1.left == null) {
                en.tree1.left = en.tree2.left;
            } else {
                s.push(new Entry(en.tree1.left, en.tree2.left));
            }
            if (en.tree1.right == null) {
                en.tree1.right = en.tree2.right;
            } else {
                s.push(new Entry(en.tree1.right, en.tree2.right));
            }
        }

        return t1;
    }
}

 

转载于:https://my.oschina.net/daxin/blog/1822132

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值