[LeetCode] 98. Validate Binary Search Tree (Medium) (JAVA)

[LeetCode] 98. Validate Binary Search Tree (Medium) (JAVA)

Subject address: https://leetcode.com/problems/validate-binary-search-tree/

Title description:

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:


    2
   / \
  1   3

Input: [2,1,3]
Output: true

Example 2:

    5
   / \
  1   4
     / \
    3   6

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

Topic

Given a binary tree, judge whether it is a valid binary search tree.

Suppose a binary search tree has the following characteristics:

  • The left subtree of the node only contains numbers less than the current node.
  • The right subtree of the node only contains numbers greater than the current node.
  • All left subtrees and right subtrees themselves must also be binary search trees.

Problem solving method

1. The middle order traversal of the binary search tree is an increasing array
2. The middle order traversal of the binary tree, and then judge whether it is increasing

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    Integer pre = null;
    public boolean isValidBST(TreeNode root) {
        if (root == null) return true;
        boolean flag = isValidBST(root.left);
        if (!flag) return false;
        if (pre != null && pre >= root.val) return false;
        pre = root.val;
        flag = isValidBST(root.right);
        if (!flag) return false;
        return true;
    }
}

Execution time: 0 ms, beats 100.00% of users
in all Java submissions Memory consumption: 39.4 MB, beats 15.94% of users in all Java submissions

Guess you like

Origin blog.csdn.net/qq_16927853/article/details/105688512