確認樹是不是從任意中間節點切開時,左子樹值皆小於中間節點,右子樹皆大於中間節點。
class Solution {
public:
bool isValidBST(TreeNode* root) {
return frule(root, NULL, NULL);
}
private:
bool frule(TreeNode* cur, TreeNode* mini, TreeNode* maxi) {
if (!cur) return true;
if ( mini )
if ( cur->val <= mini->val )
return false;
if ( maxi )
if ( cur->val >= maxi->val)
return false;
return frule(cur->left, mini, cur) && frule(cur->right, cur, maxi);
}
};