1. 程式人生 > >leetcode 98.Validate Binary Search Tree

leetcode 98.Validate Binary Search Tree

leetcode 98.Validate Binary Search Tree

題目:

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:

Input:
    2
   / \
  1   3
Output: true

Example 2:

    5
   / \
  1   4
     / \
    3   6
Output: false
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.

解法:

這個題讓我們驗證這課二叉樹是否是一顆嚴格意義上的二叉搜尋樹,也即所有子樹的右子節點的值一定大於根節點,左子結點小於根節點。

根據這個思路,我們就可以得出程式碼的求解了。

程式碼:

class Solution {
public:
    bool isValidBST(TreeNode * root) {
        return isValidBSTHelper(root, INT64_MIN, INT64_MAX);
    }
    
    bool isValidBSTHelper(TreeNode *root, long
lower, long upper){ if(root == NULL) return true; if(root->val>=upper || root->val<=lower) return false; return isValidBSTHelper(root->left,lower,root->val)&&isValidBSTHelper(root->right,root->val,upper); } };