202 字
1 分钟
LeetCode 面试经典150题 [80/150 验证二叉搜索树]
题目描述
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
输入:root = [2,1,3]输出:true示例 2:
输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4 。个人C++解答
利用二叉搜索树的定义,中序遍历为升序这样的条件去判断,起初用递归按照条件来写,但是由于没考虑左右字数必须都是二叉搜索树也就是说不能只小于或大于根节点这一个条件,所以没做出来
/** * 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) {} * }; */class Solution { vector<long> vec;public: bool isValidBST(TreeNode* root) { inOrder(root); for (int i = 1; i < vec.size(); i++) { if (vec[i] - vec[i - 1] <= 0) { return false; } } return true; } void inOrder(TreeNode* root) { if(root == nullptr) return; inOrder(root->left); vec.push_back(root->val); inOrder(root->right); }}; 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
LeetCode 面试经典150题 [80/150 验证二叉搜索树]
https://ericonline.cn/posts/leetcode-面试经典150题-80-150-验证二叉搜索树/ 部分信息可能已经过时
相关文章 智能推荐
1
LeetCode 面试经典150题 [67/150 对称二叉树]
LeetCode 题解 2024-07-16
2
LeetCode 面试经典150题 [66/150 翻转二叉树]
LeetCode 题解 2024-07-16
3
LeetCode 面试经典150题 [78/150 二叉搜索树的最小绝对差]
LeetCode 题解 2024-07-31
4
LeetCode 面试经典150题 [75/150 二叉树的层平均值]
LeetCode 题解 2024-07-31
5
LeetCode 面试经典150题 [74/150 二叉树的右视图]
LeetCode 题解 2024-07-31
随机文章 随机推荐
1
LeetCode 面试经典150题 [13/150 除自身以外数组的乘积]
LeetCode 题解 2024-06-19
2
LeetCode 面试经典150题 [51/150 有效的括号]
LeetCode 题解 2024-06-27
3
LeetCode 面试经典150题 [20/150 最长公共前缀]
LeetCode 题解 2024-06-20
4
LeetCode 面试经典150题 [78/150 二叉搜索树的最小绝对差]
LeetCode 题解 2024-07-31
5
LeetCode 面试经典150题 [60/150 删除链表的倒数第N个结点]
LeetCode 题解 2024-07-03