617. Merge Two Binary Trees

来源:互联网 发布:淘宝的优点和缺点 编辑:程序博客网 时间:2024/06/10 15:36

问题描述:将两个二叉树对应节点的值相加,得到一个新的二叉树。
原答案:

    public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {        if(t1==null)            return t2;        if(t2==null)            return t1;        TreeNode result=new TreeNode(0);        result.val=t1.val+t2.val;        result=calculateNode(result,t1,t2);        return result;    }    private TreeNode calculateNode(TreeNode result,TreeNode t1, TreeNode t2){        result.val=t1.val+t2.val;        if(t1.left==null){            if(t2.left!=null){                result.left=t2.left;            }        }else if(t2.left==null){            result.left=t1.left;        }else{            result.left=new TreeNode(0);            result.left=calculateNode(result.left,t1.left,t2.left);          }        if(t1.right==null){            if(t2.right!=null)                result.right=t2.right;        }else if(t2.right==null){            result.right=t1.right;        } else{            result.right=new TreeNode(0);            result.right=calculateNode(result.right,t1.right,t2.right);        }        return result;    }

最佳答案:

    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;    }

简洁而又完美的递归

原创粉丝点击