判断是否是BST,需要注意的是你不能只判断root的左儿子小于根节点,根节点小于右儿子,而是需要保证右子树所有的点都要大于根节点,左子树所有的点都小于根节点。所以可以做中序遍历,然后判断遍历所得的数组,是否是递增的。
class Solution {
public:
vector<int> n;
bool isValidBST(TreeNode* root) {
n.clear();
inorder(root);
for(int i = 1; i < n.size(); i++)
if(n[i] <= n[i - 1])return false;
return true;
}
void inorder(TreeNode* root)
{
if(root == NULL)return ;
inorder(root->left);
n.push_back(root->val);
inorder(root->right);
}
};