描述

  1. 给定一个二叉树,检查它是否是镜像对称的。
  2. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
  3. 1
  4. / \
  5. 2 2
  6. / \ / \
  7. 3 4 4 3
  8. 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
  9. 1
  10. / \
  11. 2 2
  12. \ \
  13. 3 3

解答

  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. return root!=null?isSameTree(root.left,root.right):true;
  13. }
  14. public boolean isSameTree(TreeNode q,TreeNode p) {
  15. if (p == null && q == null) {
  16. return true;
  17. }
  18. if (p == null || q == null) {
  19. return false;
  20. }
  21. return p.val == q.val&&isSameTree(q.left, p.right) && isSameTree(q.right, p.left);
  22. }
  23. }