【剑指offer】 对称的二叉树

  |   0 评论   |   0 浏览

题目

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

我的答案

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isSymmetric = function (root) {
    const mirroTree = getMirroTree(root);
    return isEqualTree(mirroTree,root);
};

var getMirroTree = function (root) {
    if (!root) {
        return null;
    }
    const newRoot=new TreeNode(root.val);
    const temp = getMirroTree(root.left);
    newRoot.left = getMirroTree(root.right);
    newRoot.right = temp;
    return newRoot;
}

var isEqualTree = function (A, B) {
    if (!A && !B) {
        return true;
    }
    if (!A || !B) {
        return false;
    }
    if (A.val == B.val && isEqualTree(A.left, B.left) && isEqualTree(A.right, B.right)) {
        return true;
    }
    return false;
}

这道题就是先将树镜像,然后对比镜像前后的树是否相同。唯一需要注意的是,由于object是引用类型,镜像是需要复制出来这棵树。


标题:【剑指offer】 对称的二叉树
作者:limanting
地址:https://blog.manxiaozhi.com/articles/2021/09/08/1631031793758.html