126 对称的二叉树

问题描述:请实现一个函数,用来判断一颗二叉树是不是堆成的。如果一颗二叉树和他的镜像一样,那么他是对称的。
递归方法求解:

public Boolean isSym(TreeNode left,TreeNode right)
{
if(left==null&&right==null){return true;}
if(left!=null&&right==null){return false;}
if(left==null&&right!=null){return false;}
if(left.val!=right.val){return false;}
return isSym(left.left,right.right)&&isSum(left.right,right.left);
}
public Boolean IsSym(TreeNode root)
{
return isSym(root.left,root.right);
}

非递归的方式

public Boolean isSym(TreeNode root)
{
Queuequeue=new LinkedList<>();
queue.add(root.left);
queue.add(root.right);
while(!queue.isEmpty())
{
TreeNode left=queue.poll();
TreeNode right=queue.poll();
if(left!=null&&right==null){return false;}
if(left==null&&right!=null){return false;}
if(left.val!=right.val){return false;}
queue.add(left.left);
queue.add(right.right);
queue.add(left.right);
queue.add(right.left);
}
return true;
}

你可能感兴趣的:(JAVA刷题500道,java,算法,数据结构,开发语言)