原题链接
- 使用递归的思路
- 调用递归函数dfs
- 进入递归函数后,终止条件是,两个结点都是空,或者有个一个为空,或者两个结点的值不相等
- 若以上的终止条件没有被触发,则return 递归函数(左结点的左和右节点的右)&& (左节点的右和右结点的左)
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null) return false;
return recur(root.left, root.right);
}
public boolean recur(TreeNode left, TreeNode right){
if(left == null && right == null) return true;
if(left == null || right == null) return false;
if(left.val != right.val) return false;
return recur(left.left, right.right) && recur(left.right, right.left);
}
}
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null) {
return true;
}
return dfs(root.left,root.right);
}
boolean dfs(TreeNode left, TreeNode right) {
if(left==null && right==null) {
return true;
}
if(left==null || right==null) {
return false;
}
if(left.val!=right.val) {
return false;
}
return dfs(left.left,right.right) && dfs(left.right,right.left);
}
}