LC-相同的树
链接:https://leetcode.cn/problems/same-tree/solutions/363636/xiang-tong-de-shu-by-leetcode-solution/
描述:给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
例1:
输入:p = [1,2,3], q = [1,2,3]
输出:true
例2:
输入:p = [1,2], q = [1,null,2]
输出:false
例3:
输入:p = [1,2,1], q = [1,1,2]
输出:false
思路:
通过中序遍历,判断树的结构和节点的值是否相同。
代码如下
public boolean isSameTree(TreeNode p, TreeNode q) {
//当p和q只有一个为空时,肯定不相同
if (p == null && q != null) {
return false;
}
if (p != null && q == null) {
return false;
}
//当p和q都为空时,相同
if (p == null && p == null) {
return true;
}
//如果当前节点值不一样,这不相同
if (p.val != q.val) {
return false;
}
//遍历判断节点的左节点和右节点,必须都相同才认为相同
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}