101. 对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。
这题和之前做过的100. 相同的树 很相似,代码基本可以复用。
首先定义递归方法的结束条件:当两树有一个为空时则需返回,同样是空则为true,否正不等就为false。
然后继续左右子树的处理(继续递归左右子树),根据题意我们只需要判断值是否相同,左右子树是否相同即可,判断左右子树直接使用当前递归方法即可,此处与100. 相同的树 的区别在于本题是p树的左子树对于q的右子树,p树的右子树对于q的左子树。
代码如下:
public boolean isSymmetric(TreeNode root) {
if(root == null){
return true;
}
return dfs(root.left,root.right);
}
// 递归方法
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);
}
运行结果如下:
(含有注释效果会低,去掉注释后内存由提升)
个人见解不喜勿喷!!!