98. Validate Binary Search Tree

川长思鸟来 2022-03-07 03:42 269阅读 0赞

Given a binary tree, determine if it is a valid binary search tree (BST).
Assume a BST is defined as follows:
The left subtree of a node contains only nodes with keys less than the node’s key.
The right subtree of a node contains only nodes with keys greater than the node’s key.
Both the left and right subtrees must also be binary search trees.
Example 1:

  1. Input:
  2. 2
  3. / \
  4. 1 3
  5. Output: true

Example 2:

  1. 5
  2. / \
  3. 1 4
  4. / \
  5. 3 6
  6. Output: false
  7. Explanation: The input is: [5,1,4,null,null,3,6]. The root node's value is 5 but its right child's value is 4.

难度:medium

题目:给定二叉树,判断其是否为二叉搜索树。

思路:递归,并记录当前结点的取值范围。

Runtime: 0 ms, faster than 100.00% of Java online submissions for Validate Binary Search Tree.
Memory Usage: 37.6 MB, less than 100.00% of Java online submissions for Validate Binary Search Tree.

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. public class Solution {
  11. public boolean isValidBST(TreeNode root) {
  12. if (null == root) {
  13. return true;
  14. }
  15. return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);
  16. }
  17. public boolean isValidBST(TreeNode root, long minVal, long maxVal) {
  18. if (null == root) {
  19. return true;
  20. }
  21. if (root.val >= maxVal || root.val <= minVal) {
  22. return false;
  23. }
  24. return isValidBST(root.left, minVal, root.val) && isValidBST(root.right, root.val, maxVal);
  25. }
  26. }

发表评论

表情:
评论列表 (有 0 条评论,269人围观)

还没有评论,来说两句吧...

相关阅读