commit
6c7cfa4faf
|
|
@ -121,7 +121,6 @@ boolean isValidBST(TreeNode root, TreeNode min, TreeNode max) {
|
|||
}
|
||||
```
|
||||
|
||||
|
||||
**一、在 BST 中查找一个数是否存在**
|
||||
|
||||
根据我们的指导思想,可以这样写代码:
|
||||
|
|
@ -499,6 +498,30 @@ class Solution:
|
|||
return node
|
||||
```
|
||||
|
||||
### java
|
||||
```
|
||||
/**
|
||||
* 第【98】题的扩展解法:
|
||||
* 对于BST,有一个重要的性质,即“BST的中序遍历是单调递增的”。抓住这个性质,我们可以通过中序遍历来判断该二叉树是不是BST。
|
||||
* 我们定义preNode节点表示上一个遍历的节点,在中序遍历的时候,比较当前节点和preNode节点的大小,一旦有节点小于或等于前一个节点,则不满足BST的规则,直接返回false,否则遍历结束,返回true。
|
||||
*/
|
||||
TreeNode preNode = null;
|
||||
public boolean isValidBST(TreeNode root) {
|
||||
if (root == null) return true;
|
||||
|
||||
boolean leftRes = isValidBST(root.left);
|
||||
|
||||
if (preNode != null && root.val <= preNode.val) {
|
||||
return false;
|
||||
}
|
||||
preNode = root;
|
||||
|
||||
boolean rightRes = isValidBST(root.right);
|
||||
|
||||
return leftRes && rightRes;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
### javascript
|
||||
|
|
@ -695,4 +718,3 @@ var deleteNode = function(root, key) {
|
|||
}
|
||||
};
|
||||
```
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue