leetcode 98.Validate Binary Search Tree
阿新 • • 發佈:2018-12-20
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
- 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);
}
};