力扣:合并二叉树java

力扣:合并二叉树java

力扣:合并二叉树java_第1张图片

流程:

先序遍历,本题要点同时操控两个二叉树,结束条件的判断,是其中一个为空就直直接返回另一个子树放在新的二叉树上。
递归三部曲:
参数返回值:参数为两个二叉树的根节点,返回值为新的root节点
结束条件:root1为空就返回root2,root2为空就返回root1。
递归逻辑:

  1. 创建一个新的根节点root,赋值为root1和root2的和
  2. 对新节点的左孩子递归,参数为root1的左子树和root2的左子树。
  3. 对新节点的右孩子递归,参数为root1的右子树和root2的右子树。
  4. 返回root

代码:

class Solution {
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {//参数为两个根节点
        if(root1 == null) return root2;//结束条件,只要右一个节点为空就直接返回另一个节点
        if(root2 == null) return root1;
        TreeNode root = new TreeNode();//新建一个节点
        root.val = root1.val+root2.val;//新节点赋值
        root.left = mergeTrees(root1.left,root2.left);//递归调用计算新节点的左孩子,参数是root1和root2的左孩子
        root.right = mergeTrees(root1.right,root2.right);//递归调用计算新节点的右孩子,参数是root1和root2的右孩子
        return root;
    }
}

你可能感兴趣的:(java,leetcode,算法,数据结构)