最近在学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
关于javascript 二叉树,判断是否是自己的镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31237401/