当前位置: 首页 > news >正文

学校网站群建设思路互联网营销的优势

学校网站群建设思路,互联网营销的优势,媒体查询响应式布局,百度快照优化题目 98. 验证二叉搜索树 中等 相关标签 树 深度优先搜索 二叉搜索树 二叉树 给你一个二叉树的根节点 root #xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当…题目 98. 验证二叉搜索树 中等 相关标签 树  深度优先搜索  二叉搜索树  二叉树 给你一个二叉树的根节点 root 判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1 输入root [2,1,3] 输出true示例 2 输入root [5,1,4,null,null,3,6] 输出false 解释根节点的值是 5 但是右子节点的值是 4 。提示 树中节点数目范围在[1, 104] 内-231 Node.val 231 - 1 思路和解题方法 第一种方法 首先定义一个辅助函数 traversal用于实现中序遍历二叉树并将节点值存储在一个数组 vec 中。然后调用 traversal 函数来遍历二叉树并按顺序存储节点值。最后检查数组 vec 是否按照升序排列若是则为合法的二叉搜索树返回 true否则返回 false。 第二种方法 定义一个全局变量 maxVal初始值设为 LONG_MIN。使用递归函数 isValidBST 对二叉树进行深度优先搜索。在搜索过程中先递归遍历左子树然后判断当前节点的值是否大于 maxVal若是则更新 maxVal 为当前节点的值表示已经访问了当前节点继续遍历右子树。若出现当前节点的值小于等于 maxVal则说明不满足二叉搜索树的要求返回 false。如果整个搜索过程中没有出现不满足要求的情况即二叉树是合法的二叉搜索树返回 true。 第三种方法 定义一个指针 pre 用于记录前一个访问的节点。使用递归函数 isValidBST 对二叉树进行中序遍历。在中序遍历过程中先递归遍历左子树然后判断当前节点的值是否大于前一个节点的值若不满足这个条件则返回 false。如果整个中序遍历过程中都满足当前节点值大于前一个节点值的条件则说明二叉树是合法的二叉搜索树返回 true。 复杂度 时间复杂度: O(n) 时间复杂度O(n)其中 nnn 为二叉树的节点个数。二叉树的每个节点最多被访问一次因此时间复杂度为 O(n)。 空间复杂度 O(n) 空间复杂度O(n)其中 nnn 为二叉树的节点个数。栈最多存储 nnn 个节点因此需要额外的 O(n)的空间。 c 代码一 // 中序遍历二叉树将节点值按顺序存储在vec数组中 void traversal(TreeNode* root) {if(root NULL) return ;// 遍历左子树traversal(root-left);// 将当前节点值加入数组vec.push_back(root-val);// 遍历右子树traversal(root-right); }bool isValidBST(TreeNode* root) {// 清空数组vec.clear();// 进行中序遍历traversal(root);// 检查数组是否按升序排列for(int i 1; i vec.size(); i) {// 若出现逆序则不是二叉搜索树if(vec[i] vec[i-1]) return false;}// 数组按升序排列是二叉搜索树return true; }c代码二 long long maxVal LONG_MIN; // 因为后台测试数据中有int最小值bool isValidBST(TreeNode* root) {// 到达叶节点返回true表示是一个合法的搜索二叉树if(root NULL) return true;// 先递归处理左子树bool left isValidBST(root-left);// 判断当前节点值是否大于maxValif(maxVal root-val) maxVal root-val;else return false;// 再递归处理右子树bool right isValidBST(root-right);// 左右子树都是合法的搜索二叉树整棵树才是合法的return left right; }c代码三 TreeNode* pre NULL; // 用来记录前一个节点bool isValidBST(TreeNode* root) {// 到达叶节点返回true表示是一个合法的搜索二叉树if(root NULL) return true;// 先递归处理左子树bool left isValidBST(root-left);// 判断当前节点的值是否大于等于前一个节点的值if(pre ! NULL pre-val root-val)return false;// 更新pre指针为当前节点pre root;// 再递归处理右子树bool right isValidBST(root-right);// 左右子树都是合法的搜索二叉树整棵树才是合法的return left right; }c迭代法 class Solution { public:bool isValidBST(TreeNode* root) {stackTreeNode* st; // 创建一个栈用于存储节点TreeNode* cur root; // 初始化当前节点为根节点TreeNode* pre NULL; // 初始化前一个节点为NULL用于记录前一个节点的值while (cur ! NULL || !st.empty()) {if (cur ! NULL) {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; // 遍历完整棵树后没有发现非法节点值返回true表示是一个有效的二叉搜索树} };觉得有用的话可以点点赞支持一下。 如果愿意的话关注一下。会对你有更多的帮助。 每天都会不定时更新哦  人  。
http://www.zqtcl.cn/news/82228/

相关文章:

  • 家政服务公司网站建设方案策划书物流网点查询官网
  • 高端制作网站设计济南网站建设公司选济南网络
  • 做网站的网络非要专线吗网站平台建设工作汇报
  • 广西专业做网站的公司wordpress未登录用户重定向
  • 中国建设银行复核网站寿光市住房和建设局网站
  • 企业服务 免费网站建设大连网站设计收费标准
  • 深圳网站制作公司免签支付 wordpress
  • 开发网站监控推荐广州乐地网站建设
  • 摄影网站定位fi网页动图制作
  • 网站建设需求方案文档网站宣传方式有哪些
  • 广州海珠区赤岗 新港网站建设公司中安(深圳)建设公司成员
  • 国外网站网址centos7删除wordpress
  • 沧州国外网站建设钓鱼网站下载安装
  • 佛山网站营销深圳哪做网站
  • 百度网站介绍网站网页怎么设计
  • 快手作品推广网站阿里云 多域名解析 到不同的网站
  • 华为建站百姓网二手买卖
  • 榆林北京网站建设广州网站手机建设公司
  • 张家口远大建设集团网站苏宁易购商城
  • 做网站推广用优化还是竞价wordpress pdf缩略图
  • 什么是网页设计与制作课程的深度有效的网站优化
  • 机械加工类网站怎么做网站建设杭州缘择低价
  • 网站建设需要哪些证书如何查网站是否备案
  • 怎么样才能把网站关键词做有排名wordpress符号插件
  • 前端做学校网站教务怎么看是哪家做的网站
  • 建设工程知识类网站创意型网站建设
  • 网站 如何添加备案号网站app微信三合一
  • 企业网站托管外包平台网站建设与优化及覆盖率方案
  • 服装网站建设多少钱wordpress小程序小论坛
  • 网站权重分为几个等级贵港网站建设培训