我最近学习过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

09-16 23:27