函数返回undefined而不是boolean。 BST,LeetCode

时间:2018-01-02 02:18:52

标签: javascript algorithm binary-search-tree

我正在处理leetcode中的问题。代码是用javascript编写的。

https://leetcode.com/problems/two-sum-iv-input-is-a-bst/description/

每当我测试代码时它返回undefined,但是当我在返回语句之前放置console.log(true)时,它会输出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);   
}

有人可以帮助我理解为什么我的代码返回undefined?我以前遇到过这个问题,但只有在返回布尔时才会出现。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

目前,findTarget并未返回任何内容。您想要return traverse(currentNode);