本文主要是介绍Leetcode 98 验证二叉搜索树 C++实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Leetcode 98. 验证二叉搜索树
问题:给你一个二叉树的根节点 root
,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
- 节点的左子树只包含 小于 当前节点的数。
- 节点的右子树只包含 大于 当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
算法:结点的左子树必定全部小于该结点值 val ,结点的右子树必定全部大雨该结点值 val ,所以创立新函数导入 max 、min 值,再令其满足其他条件即可。
注意,不能单独判断该结点的左孩子结点是否小于他,右孩子结点是否大于他,必须要求整个子树都符合条件才可。
代码:
class Solution {
public:bool BST(struct TreeNode* node,long min,long max){if(!node) return true;// 空结点返回trueif(node->val <= min || node->val >= max) return false;// 结点值val如果小于最小的或者大于最大的,返回falsereturn BST(node->left,min,node->val) && BST(node->right,node->val,max);}bool isValidBST(TreeNode* root) {return BST(root,LONG_MIN,LONG_MAX);// LONG_MIN是long的最小数值,LONG_MAX是long的最大数值}
};
这篇关于Leetcode 98 验证二叉搜索树 C++实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!