vlidate BST 中序遍历是递增的,inorder比较当前和之前的节点,如果小于之前的节点就不是有效的
void inorder(struct TreeNode* root, bool * ret,struct TreeNode **prev)
{
if((*ret)&&root){
inorder(root->left, ret,prev);
if(*prev && (root->val <= (*prev)->val))
*ret = false;
*prev = root;
inorder(root->right,ret,prev);
}
}
bool isValidBST(struct TreeNode* root) {
if(root == NULL)
return true;
bool ret = true;
struct TreeNode *prev = NULL;
inorder(root, &ret, &prev);
return ret;
}