个人网站做淘宝客犯法吗wordpress登录数据库吗
news/
2025/9/27 8:16:35/
文章来源:
个人网站做淘宝客犯法吗,wordpress登录数据库吗,长沙网上购物超市,阿里企业邮箱注册申请代码随想录二刷 #xff5c;二叉树 #xff5c; 验证二叉搜索树 题目描述解题思路递归法迭代法 代码实现递归法迭代法 题目描述
98.验证二叉搜索树
给定一个二叉树#xff0c;判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征#xff1a;
节点的左子… 代码随想录二刷 二叉树 验证二叉搜索树 题目描述解题思路递归法迭代法 代码实现递归法迭代法 题目描述
98.验证二叉搜索树
给定一个二叉树判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征
节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。
解题思路
在中序遍历下输出的二叉搜索树节点的数值是有序序列。
有了这个特性验证二叉搜索树就相当于变成了判断一个序列是不是递增的了。
递归法
通过中序遍历将二叉搜索树转变为一个数组
vectorint vec;
void traversal(TreeNode* root) {if (root NULL) return;traversal(root-left);vec.push_back(root-val);traversal(root-right);
}然后只要比较一下这个数组是否是有序的即可
traversal(root);
for (int i 0; i veec.size(); i) {if (vec[i] vec[i - 1]) return false;
}
return true;迭代法
迭代法中序遍历稍加改动即可。
需要注意这道题目有两个陷阱。
第一个陷阱是不能单纯的比较左节点小于中间节点右节点大于中间节点就完事了。我们要比较的是 左子树所有节点小于中间节点右子树所有节点大于中间节点。
样例中最小节点 可能是int的最小值如果这样使用最小的int来比较也是不行的。
此时可以初始化比较元素为longlong的最小值。
代码实现
递归法
class Solution {
private:vectorint vec;void traversal(TreeNode* root) {if (root NULL) return;traversal(root-left);vec.push_back(root-val); // 将二叉搜索树转换为有序数组traversal(root-right);}
public:bool isValidBST(TreeNode* root) {vec.clear(); // 不加这句在leetcode上也可以过但最好加上traversal(root);for (int i 1; i vec.size(); i) {// 注意要小于等于搜索树里不能有相同元素if (vec[i] vec[i - 1]) return false;}return true;}
};迭代法
class Solution {
public:bool isValidBST(TreeNode* root) {stackTreeNode* st;TreeNode* cur root;TreeNode* pre NULL:while (cur ! NULL || !st.empty()) {st.push(cur);cur cur-left;} else {cur st.top();st.pop();if (pre ! NULL cur-val pre-val)return false;pre cur;cur cur-right;}}return true;
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916745.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!