题目:
给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。
判断两个二叉树相等的条件是:两个二叉树的结构相同,并且相同的节点上具有相同的值。
数据范围:树上的节点数满足 0≤n≤2000≤n≤200 , 树上节点的值满足 0≤val≤50000≤val≤5000
进阶: 空间复杂度 O(1), 时间复杂度 O(n)
分析:
1.判断两个树是不是都是null,如果都是,则返回true
2.两个树仅有一个是null的,是不相等的,则返回false
3.判断两个树根节点是不是相等,如果不相等,那两棵树就不相等,则返回false
4.递归查询左右节点是否相等
核心代码实现
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param p TreeNode类
* @param q TreeNode类
* @return bool布尔型
*/
public boolean isSameTree (TreeNode p, TreeNode q) {
if (p == null && q == null) {
return true;
}
if (p == null || q == null) {
return false;
}
if (p.val != q.val) {
return false;
}
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
}