首页 > 解决方案 > 这棵树是有效的二叉搜索树吗 [1, 7, 11, 17, 21, 29, 74, 89, 91, 101, 132, 157]

问题描述

对于 leetcode 中提到的以下代码,输出被提及为 false

但我已经使用这个 javascript 代码来检查验证并返回 true。

我想了解我对二叉搜索树的假设是否错误,或者我粘贴在这里的代码中是否缺少某些最终情况?

需要怎么理解?

var arr = [1, 7, 11, 17, 21, 29, 74, 89, 91, 101, 132, 157];

function Node(data, left = null, right = null) {
  this.data = data;
  this.left = null;
  this.right = null;
}

let bstNode = createBSTRecurrsive(arr);
console.log(bstNode);
function createBSTRecurrsive(arr){
  if(arr.length == 0){
    return null;
  }
  let middle = parseInt(arr.length / 2);
  let root = new Node(arr[middle]);
  root.left = createBSTRecurrsive(arr.slice(0, middle));
  root.right = createBSTRecurrsive(arr.slice(middle + 1));
  return root;
}

isvalidBST(bstNode);
function isvalidBST(node){
  if(node == null){
    return true;
  }
  let stack = [];
  let temp = null;
  while(node != null || stack.length != 0){
    while(node != null){
      stack.push(node);
      node = node.left;
    }
    node = stack.pop();
    if(temp != null && node.data <= temp.data){
      console.log(node);
      console.log(temp);
      return false
    };
    temp = node;
    node = node.right;
  }
  return true;
}

标签: javascriptbinary-search-tree

解决方案


推荐阅读