C++——验证二叉搜索树leetcode98
- 题目描述
- 思路
- 代码
题目描述
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
思路
迭代,如果当前节点为空,则true,如果当前节点的值小于等于左边的最大值,或者大于等于右边的最小值,则false,并对左右子树更新左右边界,
代码
bool isValidBST(TreeNode* root)
{return isV(root, LLONG_MIN, LLONG_MAX);
}
bool isV(TreeNode* root, long max_left, long min_right)
{if(!root) return true;if(root->val<=max_left || root->val>=min_right) return false;return isV(root->left, max_left, root->val) && isV(root->right, root->val, min_right);
}