相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 1:
输入: 1 1
/ \ / \
2 3 2 3
[1,2,3], [1,2,3]
输出: true
思路+代码+注释:
public boolean isSameTree(TreeNode p, TreeNode q) {
/*
思路:首先判断根节点是否相同,不相同返回false,相同则递归判断左子树是否相同,递归判断右子树是否相同,如果左右子树都相同那么返回true
递归终止条件:两个节点都为null,此时说明该条路径是相同的返回true;一个节点为null,一个节点不为null,说明结构不同返回false
*/
return isSameTreeRecursive(p,q);
}
private boolean isSameTreeRecursive(TreeNode p, TreeNode q)
{
boolean leftTree=false;
boolean rightTree=false;
if (p==null && q==null)
{
return true;
}
else if (p!=null && q!=null)
{
if (p.val!=q.val)
{
return false;
}else {
leftTree=isSameTreeRecursive(p.left,q.left);
rightTree=isSameTreeRecursive(p.right,q.right);
}
}
//一个为空一个不为空
else {
return false;
}
return leftTree&&rightTree;
}