给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [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

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
function demo(p,q){
    //建立两个一样的树
    //判断两个树是否都为空
    if(!p&&!q){
        return true;
    }
    //如果两子树中有一个有存在就返回false
    if(!p||!q){
        return false;
    }
    //判断两个树的值是否相等
    if(p.val == q.val){
        //向下进行判断,判断当前节点p的左子树和q右子树的节点,以及当前节点p右子树和q节点的左子树是否相同
        return demo(p.left,q.right)&&demo(p.right,q.left);
    }
    return false;
}
var isSymmetric = function(root) {
     return demo(root,root);
};

实现:

  既然是对称就设置两个相同的树A和树B,将A树的左子树和B树的右子树进行对比   以及  A树的右子树和B树的左子树进行对比,如果不相同就将返回,如果相同就继续向下执行

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/symmetric-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

01-03 13:23