我最近学习过javascript,不知道为什么我写的代码是错误的。问题在于:给出一棵二叉树,检查它是否是其自身的镜像。
var isSymmetric = function(root) {
if(root === null) return true;
function isSymmetric(leftNode, rightNode){
if(leftNode === null && rightNode === null) return true;
if(leftNode === null || rightNode === null) return false;
return (leftNode.val == rightNode.val) && isSymmetric(leftNode.left, rightNode.right) && isSymmetric(leftNode.right, rightNode.left);
}
isSymmetric(root.left, root.right);
};
输入为1时,结果为“未定义”。该算法是从我的Java代码转换而来的。请告诉我哪里错了。
最佳答案
var isSymmetric = function(root) {
if (root === null) return true;
function isSymmetric(leftNode, rightNode) {
if (leftNode === null && rightNode === null) return true;
if (leftNode === null || rightNode === null) return false;
return (leftNode.val == rightNode.val) && isSymmetric(leftNode.left, rightNode.right) && isSymmetric(leftNode.right, rightNode.left);
}
return isSymmetric(root.left, root.right);
};
您需要返回isSymmetric的结果,如上所示
就个人而言,我不会让外部函数和内部函数具有相同的名称,这让我的旧眼睛看起来很困惑:p