判断对称二叉树
package test; /** * @title:TreeTest * @description: 判断对称二叉树 * @author: dingpeng * @date: 2020/3/10 * @since: Jdk8 */ public class SymmetryTreeTest { public static void main(String[] args) { TreeNode a=new TreeNode(2); a.left=new TreeNode(3); a.right=new TreeNode(3); a.left.left=new TreeNode(4); a.left.right=new TreeNode(5); a.right.left=new TreeNode(null); a.right.right=new TreeNode(4); Solution s =new Solution(); s.isSymmetric(a); } } class Solution { public int isSym = 0; public boolean isSymmetric(TreeNode root) { System.out.println(root); if(root==null){ return true; } TreeNode left = root.left; TreeNode right = root.right; mid(left,right); System.out.println(isSym); return isSym==0?true:false; } //中序遍历 public void mid(TreeNode nodeleft, TreeNode noderight){ if(isSym!=-1){ if(nodeleft!=null&&noderight!=null){ if(nodeleft.val!=noderight.val) { isSym = -1; return; } mid(nodeleft.left, noderight.right); mid(nodeleft.right, noderight.left); }//有空值 else if((nodeleft==null && noderight!=null) ||(nodeleft!=null && noderight==null)){ isSym = -1; return; } } } }