您的位置:首页 > 其它

Validate Binary Search Tree [leetcode]

2014-09-26 15:29 357 查看
在递归函数中,加上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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: