解题思路:中序遍历二叉树,得到中序遍历序列,然后判断该序列是否是递增的序列,如果是,那就是二叉搜索树,否则就不是二叉搜索树。
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
void traverse(TreeNode* root, vector<int>& vals) {
if (root == NULL) {
return;
}
traverse(root->left, vals);
vals.push_back(root->val);
traverse(root->right, vals);
}
bool isValidBST(TreeNode* root) {
vector<int> vals;
//中序遍历得到中序遍历序列,存储在vals中
traverse(root, vals);
if (vals.size() == 0) {
return true;
}
//判断vals序列是否是递增的序列
for (int i = 0; i < (vals.size() - 1); i++) {
if (vals[i + 1] < vals[i]) {
return false;
}
}
return true;
}
};