问题描述:请实现一个函数,用来判断一颗二叉树是不是堆成的。如果一颗二叉树和他的镜像一样,那么他是对称的。
递归方法求解:
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)
{
Queue<TreeNode>queue=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;
}