描述
深度复制一个二叉树。
给定一个二叉树,返回一个他的 克隆品 。
样例
样例1:
输入: {1,2,3,4,5}
输出: {1,2,3,4,5}
解释:
样例中二叉树如下所示:
1
/ \
2 3
/ \
4 5
样例2:
输入: {1,2,3}
输出: {1,2,3}
解释:
样例中二叉树如下所示:
1
/ \
2 3
注意事项
你最好不要仅仅通过return root
来通过此题。
代码部分
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: The root of binary tree
* @return: root of new tree
*/
public TreeNode cloneTree(TreeNode root) {
// write your code here
TreeNode clone=new TreeNode(0);
if(root!=null){
clone.val = root.val;
clone.left = cloneTree(root.left);
clone.right = cloneTree(root.right);
}
else clone = null;
return clone;
}
}
补充说明
new一个根节点clone,作为新二叉树的根节点。当root非空时,将root.val赋值给clone.val,再递归遍历root树的左右子树,依次赋值。当root为空时,返回clone也为空。
java.lang.NullPointerException原因有:
1、字符串变量未初始化;
2、接口类型的对象没有用具体的类初始化;
3、当一个对象的值为空时,你没有判断为空的情况