【剑指offer】 对称的二叉树
题目
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
例如,二叉树 [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