判断对称二叉树

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;
           }
       }


    }

}

 

posted @ 2020-03-10 17:00  Nausicaa0505  阅读(170)  评论(0编辑  收藏  举报