题目描述

给定一棵二叉树,判断琪是否是自身的镜像(即:是否对称)
例如:下面这棵二叉树是对称的
1↵ / ↵ 2 2↵ / / ↵3 4 4 3↵

下面这棵二叉树不对称。
1↵ / ↵ 2 2↵ ↵ 3 3
思路:
image.png

代码

  1. //判断二叉树是否是镜像的
  2. public boolean isSymmetric (TreeNode root) {
  3. if(root==null)
  4. return true;
  5. return solve(root.left,root.right);
  6. }
  7. private boolean solve(TreeNode left, TreeNode right) {
  8. if(left==null&&right==null)
  9. return true;
  10. if(left==null||right==null)
  11. return false;
  12. if(left.val!=right.val)
  13. return false;
  14. boolean flag1 = solve(left.left,right.right);
  15. boolean flag2 = flag1?solve(left.right,right.left):false;
  16. return flag1&&flag2;
  17. }