剑指28 对称二叉树

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public boolean isSymmetric(TreeNode root) {
  12. if (root == null)
  13. return true;
  14. return check(root, root);
  15. }
  16. private boolean check(TreeNode left, TreeNode right) {
  17. if (left == null && right == null)
  18. return true;
  19. if (left == null || right == null)
  20. return false;
  21. return (left.val == right.val) && check(left.right, right.left) && check(right.left, left.right);
  22. }
  23. }