给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2 2
\ \
3 3
进阶:
你可以运用递归和迭代两种方法解决这个问题吗?
解题思路
如果左右子树为空说明相等返回true
如果左子树是空的,右子树不为空 返回false
如果两个节点值相同,判断左子树的左子树等于右子树的右子树,左子树的右子树等于右子树的左子树
递归解题
var isSymmetric = function(root) {
if(!root) return true;
return isMirror(root.left, root.right)
};
function isMirror(leftroot,rightroot){
// 如果左右子树为空说明相等返回true
if(!leftroot && !rightroot) return true;
// 如果左子树是空的,右子树不为空 返回false
if(!leftroot) return false;
if(!rightroot) return false;
// 如果两个节点值相同,判断左子树的左子树等于右子树的右子树
// 左子树的右子树等于右子树的左子树
if(leftroot.val == rightroot.val
&& isMirror(leftroot.left,rightroot.right)
&&isMirror(leftroot.right,rightroot.left))
{
return true;
}else{
return false;
}
}
至此我们就完成了leetcode-101-对称二叉树