Skip to content

Commit 9cabc3e

Browse files
committed
📝 add lc 102
1 parent e25c48c commit 9cabc3e

2 files changed

Lines changed: 91 additions & 0 deletions

File tree

Java/alg/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@
136136
- [94.二叉树的中序遍历](94.二叉树的中序遍历.md)
137137
- [96.不同的二叉搜索树](96.不同的二叉搜索树.md)
138138
- [98.验证二叉搜索树](98.验证二叉搜索树.md)
139+
- [102.二叉树的层序遍历](102.二叉树的层序遍历.md)
139140

140141
## 笔试
141142

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# 98. 验证二叉搜索树
2+
3+
[url](https://leetcode-cn.com/problems/unique-binary-search-trees/)
4+
5+
## 题目
6+
7+
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
8+
9+
假设一个二叉搜索树具有如下特征:
10+
11+
- 节点的左子树只包含小于当前节点的数。
12+
- 节点的右子树只包含大于当前节点的数。
13+
- 所有左子树和右子树自身必须也是二叉搜索树。
14+
15+
16+
```
17+
输入:
18+
2
19+
/ \
20+
1 3
21+
输出: true
22+
输入:
23+
5
24+
/ \
25+
1 4
26+
  / \
27+
  3 6
28+
输出: false
29+
解释: 输入为: [5,1,4,null,null,3,6]。
30+
  根节点的值为 5 ,但是其右子节点值为 4 。
31+
```
32+
33+
## 方法
34+
35+
36+
## code
37+
38+
### js
39+
40+
```js
41+
let isValidBST = root => {
42+
let validate = (node, min, max) => {
43+
if (node === null)
44+
return true;
45+
if (node.val <= min || node.val >= max)
46+
return false;
47+
return validate(node.left, min, node.val) && validate(node.right, node.val, max);
48+
}
49+
return validate(root, Number.MIN_VALUE, Number.MAX_VALUE);
50+
}
51+
```
52+
53+
### go
54+
55+
```go
56+
func isValidBST(root *TreeNode) bool {
57+
const INT_MAX = int(^uint(0) >> 1)
58+
const INT_MIN = ^INT_MAX
59+
var validate func(node *TreeNode, min, max int) bool
60+
validate = func(node *TreeNode, min, max int) bool {
61+
if node == nil {
62+
return true
63+
}
64+
if node.Val <= min || node.Val >= max {
65+
return false
66+
}
67+
return validate(node.Left, min, node.Val) && validate(node.Right, node.Val, max)
68+
}
69+
return validate(root, INT_MIN, INT_MAX)
70+
}
71+
```
72+
73+
### java
74+
75+
```java
76+
class Solution {
77+
public boolean isValidBST(TreeNode root) {
78+
return validate(root, Long.MIN_VALUE, Long.MAX_VALUE);
79+
}
80+
81+
public boolean validate(TreeNode node, long min, long max) {
82+
if (node == null)
83+
return true;
84+
if (node.val <= min || node.val >= max)
85+
return false;
86+
return validate(node.left, min, node.val) && validate(node.right, node.val, max);
87+
}
88+
}
89+
```
90+

0 commit comments

Comments
 (0)