在递归函数中,加上max和min,保存当前子树的最大值和最小值
合法的二叉查找树:
1.左子树最大值<根节点
2.右子树最小值>根节点
3.子树均为合法的BST
bool isValidBST(TreeNode *root) {
if (!root) return true;
int max, min;
return isValid(root, max, min);
}
bool isValid(TreeNode * root, int & max, int & min)
{
int subTreeMax, subTreeMin;
max = min = root->val;
if (root->left)
{
if (!isValid(root->left, subTreeMax, subTreeMin)) return false;
if (subTreeMax >= root->val) return false;
min = subTreeMin;
}
if (root->right)
{
if (!isValid(root->right, subTreeMax, subTreeMin)) return false;
if (subTreeMin <= root->val) return false;
max = subTreeMax;
}
return true;
}
本文探讨了在递归函数中如何利用max和min来优化合法的二叉查找树验证过程,确保每个节点的值符合二叉查找树的性质。
578

被折叠的 条评论
为什么被折叠?



