请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
此题主要是要想明白什么是对称的二叉树。
使用递归的方式主要需要注意的是对比的方式,分为两步:
1:比较左孩子的左孩子与右孩子的右孩子
2:比较右孩子的左孩子和左孩子的右孩子
/** * 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) { if(root==null) return true; boolean res=isSymmetric(root.left,root.right); return res; } public static boolean isSymmetric(TreeNode left,TreeNode right) { if(left==null && right==null) { System.out.println("left right == null"); return true; } if(left!=null)System.out.println("left="+left.val); if(right!=null)System.out.println("right="+right.val); if(left ==null || right==null||left.val != right.val ) { return false; } return isSymmetric(left.left,right.right) && isSymmetric(left.right,right.left) ; } }