题解 | #对称的二叉树#
对称的二叉树
https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb
/* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { boolean isSymmetrical(TreeNode pRoot) { // 用递归方法实现 if(pRoot == null){ return true; } return isSymmetrical(pRoot.left,pRoot.right); } private boolean isSymmetrical(TreeNode left, TreeNode right){ if(left == null && right == null ){ return true; } // 一边有,一边没有,肯定不对称;数值不相等,也不对称 if(left == null || right == null || left.val != right.val ){ return false; } return isSymmetrical(left.left,right.right) && isSymmetrical(left.right,right.left); } }
对称二叉树,其实就是自己成镜像。
递归,出口,root为null,return true;一边null,一边不是null,return false;两边值不等,return false;然后就是进入递归。对称二叉树,是左左与右右相等,左右与右左相等,这点不要搞错了,所以进入递归比较的应该是他们,不要比较成了其他的。