题意理解
验证一个二叉树是否满足二叉搜索树条件?左子树小于根,右子树大于根
问题分析
用递归
bool isValidBST(TreeNode* root) {
if(!root) //空树是二叉搜索树
return true;
return helper(root, LONG_MIN, LONG_MAX); //引入两个变量指示子树的最大值和最小值
}
bool helper(TreeNode* root, long minVal, long maxVal)
{
if (!root)
return true;
if (root -> val <= minVal || root -> val >= maxVal) //如果根小于最小值,或者根大于最大值
return false; //不满足二叉搜索树条件,返回false
return helper(root -> left, minVal, root -> val) //左子树是否是二叉搜索树,最大值换成根值
&& helper(root -> right, root -> val , maxVal); //右子树是否是二叉搜索树,最小值换成根值
}
其他
链接