请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
分析:
// 模拟对象的格式
{
val: 0,
left: {
val: 1
},
right: {
val: 1
}
}
如果left和right一个存在一个不存在,则返回false;
如果left和right都不存在,返回true;
left和right都存在,如果left.val !== right.val,返回false;
如果前面三种情况都不符合,说明是left right都存在,且left.val === right.val,则递归判断
function f (left, right) {
if (!!left !== !!right) return false
if (!left && !right) return true
if (left.val !== right.val) return false
return f(left.left, right.right) && f(left.right, right.left)
}