100. 相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
本题时判断两个数的结构和值是否都相同,同样的二叉树题目还是使用递归方法处理。
首先定义递归方法的结束条件:当两树有一个为空时则需返回,同样是空则为true,否正不等就为false。
然后继续左右子树的处理(继续递归左右子树),根据题意我们只需要判断值是否相同,左右子树是否相同即可,判断左右子树直接使用当前递归方法即可。
代码如下:
private boolean dfs(TreeNode p, TreeNode q) {
if (p == null || q == null) {
// 递归结束条件 如果p、q有一个为空那么就返回 ,并且需要判断是否相等即:都为空
return p == q;
}
// 返回值对比 ,p、q左右子树 对比结果(左右子树对比使用该递归)
return q.val == p.val && dfs(p.left,q.left) && dfs(p.right,q.right);
}
运行结果如下:
(含有注释效果会低,去掉注释后内存由提升)
个人见解不喜勿喷!!!