javascript - 这棵树是有效的二叉搜索树吗 [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;
}
解决方案
推荐阅读
- c# - 设置 Behavior 的 AssociatedObject 的值不会更新 ViewModel
- python - 是否可以从美国每个邮政编码的 GeoJSON 到某些选定邮政编码的 Folium 地图?
- python - 击中 ttk.Radiobutton 后 ttk.Treeview 的宽度增加
- reactjs - 服务器端渲染如何与单页应用程序兼容?
- php - 如何在 Laravel 策略文件中将多个用户 ID 传递给控制器
- node.js - 我们可以在 ChartsJS 中使用 EJS 标签吗?
- chart.js - 为什么条形饼图值不对齐?
- swiftui - SwiftUi - 阻止更新
- c++ - 2D数组C ++的分段错误错误
- javascript - 捕获计数器的值 - 功能范围