问题描述:
给定二叉树,确定它是否是有效的二叉搜索树(BST)。
解题思路:
题目不难,只要进行一遍中序遍历在判断是否严格递增即可。
易出错的地方:
只判断根的值和左右子树的根的值的大小关系是不够的,要保证左子树的所有节点都小于根的值,右子树的所有节点都大于根的值。
源代码:
class Solution {
public:void inorder(TreeNode* root,vector<int>& temp)
{
if(root!=NULL)
{
inorder(root->left,temp);
temp.push_back(root->val);
inorder(root->right,temp);
}
}
bool isSorted(vector<int>& temp)
{
for(int i=0;i<temp.size()-1;i++)
{
if(temp[i]>=temp[i+1])
return false;
}
return true;
}
bool isValidBST(TreeNode* root) {
if(root==NULL) return true;
vector<int> temp;
inorder(root,temp);
return isSorted(temp);
}
};