/*
请实现一个函数,用来判断一颗二叉树是不是对称的。
注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
剑指offer思路:
如果二叉树按照根左右和根右左遍历得到的顺序是一样的,则二叉树是对称的
如果树的结点值全部相同,根左右和根右左遍历得到的顺序是一样的,但树可能是不对称的,此时需要将null结点也考虑进去
*/
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
class IsSymmetrical
{
public static boolean isSymmetrical(TreeNode pRoot)
{
return symmetrical(pRoot,pRoot);
}
public static boolean symmetrical(TreeNode pRoot1, TreeNode pRoot2)
{
if (pRoot1==null&&pRoot2==null)
{
return true;
}
if (pRoot1==null||pRoot2==null)
{
return false;
}
if (pRoot1.val!=pRoot2.val)
{
return false;
}
return symmetrical(pRoot1.left,pRoot2.right)&&symmetrical(pRoot1.right,pRoot2.left);
}
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
剑指offer_对称二叉树
最新推荐文章于 2017-09-07 11:58:00 发布