58.对称的二叉树
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
/*思路:
采用递归:首先根节点以及其左右子树,(前序遍历)
左子树的左子树和右子树的右子树相同----(左的左、右的右)
左子树的右子树和右子树的左子树相同.----(左的右、右的左)
public class Solution {
boolean isSymmetrical(TreeNode pRoot)
{
if(pRoot==null)
return true;
return isMirror(pRoot.left,pRoot.right);
}
boolean isMirror(TreeNode t1,TreeNode t2){//从中间对称判断左边和右边
if(t1==null &&t2==null)
return true;
if(t1!=null &&t2!=null&&t1.val==t2.val)//当前左边等于右边时
//j继续判断(左的右、右的左)和(左的左、右的右)
return isMirror(t1.right,t2.left)&&isMirror(t1.left,t2.right);
return false;
}
非递归:采用栈或队列存取各级子树根节点