data: 2018-12-26 21:02:10
原文链接
题目
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 1:
输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true
示例 2:
输入: 1 1 / \ 2 2 [1,2], [1,null,2] 输出: false
题目分析
树状图形式肯定需要用到递归
解题思路
如果当前是最后可以确定且无子节点,则直接返回结果,否则需要继续调用本方法进行递归
public boolean isSameTree(TreeNode p, TreeNode q) {
//同时为null,表明无子节点,且该元素相同
if(p == null && q == null){
return true;
// 其中一个不为null,表明两个树不相同
}else if((p != null && q ==null) || (q != null && p ==null)){
return false;
}
// 两个值不相同,可以确定是不同的树
if(p.val != q.val){
return false;
}else{
// 当前树节点相同,但是无法判断是否还有子节点,需要递归调用
return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
}
}
总结
本题属于简单题,递归调用本方法即可