是差点运气,可我一直在努力!
当前进程:
开始时间:2020.6.27结束时间:undefined
GitHub仓库:https://github.com/Cundefined/JavaScript-or-TypeScript-for-LeetCode
1、题目要求
( 剑指 Offer 28 ) 对称的二叉树
2、解题思路
方法:递归
两个子树是否镜像对称的条件:
1、子树
1当前节点值,与子树
2当前节点值,相同
2、子树
1当前节点的【左】子树,与子树
2前节点的【右】子树,相同
3、子树
1当前节点的【右】子树,与子树
2前节点的【左】子树,相同
以上,三种情况全都返回
true,才能说明两个子树是否镜像对称
2.1、JavaScript Solution
var isSymmetric = function (root
) {
if (root
=== null) {
return true;
}
return helper(root
.left
, root
.right
);
};
function helper(subTree1
, subTree2
) {
if (subTree1
=== null && subTree2
=== null) {
return true;
}
if (subTree1
=== null || subTree2
=== null) {
return false;
}
return (
subTree1
.val
=== subTree2
.val
&&
helper(subTree1
.left
, subTree2
.right
) &&
helper(subTree1
.right
, subTree2
.left
)
);
}
2.2、TypeScript Solution
function isSymmetric(root
: TreeNode
| null): boolean
{
if (root
=== null) {
return true;
}
return helper(root
.left
, root
.right
);
}
function helper(subTree1
: TreeNode
| null, subTree2
: TreeNode
| null): boolean
{
if (subTree1
=== null && subTree2
=== null) {
return true;
}
if (subTree1
=== null || subTree2
=== null) {
return false;
}
return (
subTree1
.val
=== subTree2
.val
&&
helper(subTree1
.left
, subTree2
.right
) &&
helper(subTree1
.right
, subTree2
.left
)
);
}