题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
 
 
题目链接:
 
 
 
 
package com.sunshine.OFFER66_SECOND;

import org.junit.Test;

public class A58_isSymmetrical {

    @Test
    public void test(){
        TreeNode n1 = new TreeNode(1);
        TreeNode n2 = new TreeNode(2);
        TreeNode n3 = new TreeNode(2);
        TreeNode n4 = new TreeNode(4);
        TreeNode n5 = new TreeNode(5);
        TreeNode n6 = new TreeNode(5);
        TreeNode n7 = new TreeNode(4);
        n1.left = n2;
        n1.right = n3;
        n2.left = n4;
        n2.right = n5;
        n3.left = n6;
        n3.right = n7;
        boolean symmetrical = isSymmetrical(n1);
        System.out.println(symmetrical);
    }


    boolean isSymmetrical(TreeNode pRoot) {
        if (null == pRoot) {
            return true;
        }
        return judge(pRoot.left, pRoot.right);
    }

    boolean judge(TreeNode pos1, TreeNode pos2) {
        if (null == pos1 && null == pos2) {
            return true;
        }
        if (null == pos1 || null == pos2) {
            return false;
        }
        if (pos1.val != pos2.val) {
            return false;
        }
        return judge(pos1.left,pos2.right)&&judge(pos1.right,pos2.left);
    }
}

 

posted on 2019-10-12 11:19  MoonBeautiful  阅读(85)  评论(0编辑  收藏  举报