牛客(58)对称的二叉树
// 题目描述 // 请实现一个函数,用来判断一颗二叉树是不是对称的。 // 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } boolean isSymmetrical(TreeNode pRoot) { // 检查不过 // if (pRoot==null){ // return false; // } // 二叉树镜像 TreeNode image = getImage(pRoot); // 比较 return isSymmetrical(pRoot,image); } private boolean isSymmetrical(TreeNode pRoot, TreeNode image) { if (pRoot==null&&image==null){ return true; }else if (pRoot==null||image==null){ return false; } if (pRoot.val==image.val){ return isSymmetrical(pRoot.right,image.right)&&isSymmetrical(pRoot.left,image.left); } return false; } private TreeNode getImage(TreeNode pRoot) { if (pRoot==null){ return null; } TreeNode image = new TreeNode(pRoot.val); image.right = getImage(pRoot.left); image.left = getImage(pRoot.right); return image; }