剑指 Offer 28. 对称的二叉树
题目:
思路:
思路:
自己犯了两个错误:
1.置换后进行下级比较,这样是不行的,一直比较的是置换前的
2.在第一种方案不行之后,使用保留root,再反转后进行比较,但是是同一个对象,两者还是相同的(为什么ListNode是可以的)
3.使用现有方案:左和右进行比较
``java
/**
-
Definition for a binary tree node.
-
public class TreeNode {
-
int val;
-
TreeNode left;
-
TreeNode right;
-
TreeNode(int x) { val = x; }
-
}
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
return judge(root, root);
}private boolean judge(TreeNode root, TreeNode root1) {
if (root == null && root1 == null) {
return true;
}
if ((root == null && root1 != null) || (root != null && root1 == null)) {
return false;
}
// 只有当根节点相等时,才继续向下判断
if (root.val == root1.val) {
return judge(root.left, root1.right) && judge(root.right, root1.left);
} else {
return false;
}
}
}