题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
题目链接:
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); } }