@@ -41,7 +41,7 @@ Explanation: The root node's value is 5 but its right child's value is 4.
4141我们只需要中序遍历,然后两两判断是否有逆序的元素对即可,如果有,则不是BST,否则即为一个BST。
4242
4343### 定义法
44- 根据定义,一个结点若是在根的左子树上,那它应该小于根结点的值而大于左子树最大值 ;若是在根的右子树上,那它应该大于根结点的值而小于右子树最小值 。也就是说,每一个结点必须落在某个取值范围:
44+ 根据定义,一个结点若是在根的左子树上,那它应该小于根结点的值而大于左子树最小值 ;若是在根的右子树上,那它应该大于根结点的值而小于右子树最大值 。也就是说,每一个结点必须落在某个取值范围:
45451 . 根结点的取值范围为(考虑某个结点为最大或最小整数的情况):(long_min, long_max)
46462 . 左子树的取值范围为:(current_min, root.value)
47473 . 右子树的取值范围为:(root.value, current_max)
@@ -151,7 +151,7 @@ public:
151151};
152152```
153153
154- Java Implementation
154+ Java Code:
155155
156156```java
157157/**
@@ -185,7 +185,7 @@ class Solution {
185185
186186### 定义法
187187
188- * 语言支持:C++,Python3, Java
188+ * 语言支持:C++,Python3, Java, JS
189189
190190C++ Code:
191191
@@ -311,6 +311,34 @@ class Solution {
311311}
312312```
313313
314+ JavaScript Code:
315+
316+ ``` javascript
317+ /**
318+ * Definition for a binary tree node.
319+ * function TreeNode(val) {
320+ * this.val = val;
321+ * this.left = this.right = null;
322+ * }
323+ */
324+ /**
325+ * @param {TreeNode} root
326+ * @return {boolean}
327+ */
328+ var isValidBST = function (root ) {
329+ if (! root) return true ;
330+ return valid (root);
331+ };
332+
333+ function valid (root , min = - Infinity , max = Infinity ) {
334+ if (! root) return true ;
335+ const val = root .val ;
336+ if (val <= min) return false ;
337+ if (val >= max) return false ;
338+ return valid (root .left , min, val) && valid (root .right , val, max)
339+ }
340+ ```
341+
314342## 相关题目
315343
316344[230 .kth-smallest-element-in-a-bst](./230 .kth-smallest-element-in-a-bst.md)
0 commit comments