我正在研究leetcode的一个问题。代码是用javascript编写的。
https://leetcode.com/problems/two-sum-iv-input-is-a-bst/description/
每当我测试代码时,它返回undefined,但是当我将console.log(true)放在return语句之前时,它会打印true,但仍然不返回true。

var findTarget = function (root, k) {
  var stack = [];
  var currentNode = root;
  var arrayofVals = [];

  var traverse = function (currentNode) {
    console.log(currentNode);
    console.log(stack);
    arrayofVals.push(currentNode.val);

    if (currentNode.right !== null) {
      stack.push(currentNode.right);
    }

    if (currentNode.left !== null) {
      currentNode = currentNode.left;
      traverse(currentNode);
    }

    if (stack.length > 0 ) {
      currentNode = stack.pop();
      traverse(currentNode);
    } else {
      console.log(arrayofVals)

      for (var i = 0; i <= arrayofVals.length; i++) {
        for (var j = 0; j <= arrayofVals.length; j++) {
          if (i === j) {
            continue;
          }
          if(arrayofVals[i] + arrayofVals[j] === k) {
            console.log(1 === 1);
            return (1 === 1);
          }
        }
      }
      return false;
    }
  }
  traverse(currentNode);
}

有人能帮我理解为什么我的代码返回未定义吗我以前也遇到过这个问题,但只有在还布尔的时候。
谢谢你的帮助!

最佳答案

现在,findTarget没有返回任何内容。您将要执行return traverse(currentNode);

10-06 07:13