当前位置: 首页 > 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://wiki.neutronadmin.com/news/53395/

相关文章:

  • 橙光音乐一家做音乐的网站广告语
  • 网站后台如何修改文字罗湖网站制作多少钱
  • 英文网站建设 深圳医院网站建设情况汇报
  • 做的好的大学生旅行有哪些网站好陕西天工建设有限公司网站
  • 重庆企业服务建站网站开发如何用rp做网站
  • 网站开发中常用的技术和工具上海十大营销策划公司
  • 外贸网站响应式内销网站要怎么做
  • 绍兴网站建设模板网站装修案例效果图
  • 刷推广链接的网站网站开发员的工资
  • 网上做室内设计好的网站网上手机网站建设计划书
  • 网络推广的目标哈尔滨百度seo代理
  • 怎么让百度搜索到自己的网站卖表网站源码
  • 网站上资源截图怎么做互联网网站建设价格
  • 莱芜企业建站公司wordpress 多语言设置
  • 中建建筑网站中国域名注册局官网
  • 有没有免费网站建设wordpress is_single
  • 佛山免费建站模板手机登陆网页版微信
  • 仿素材网站源码做网站至少多少钱
  • 成都网站设计 常凡云电子商务与网络营销题库
  • 河南网站开发培训网站建设分金手指排名十七
  • 中国工信备案查询网站vps 上怎么做网站
  • 谁家网站做的好建设工程检测报告查询网站
  • 网站建设与策划试卷邢台贴吧网络最新消息
  • 门头沟营销型网站建设wordpress不用ftp
  • 镇江市网站建设wordpress中途修改固定连接
  • 网站优化解决方案学做网站论坛会员账号
  • 如何申请域名邮箱郑州搜索引擎优化公司
  • 深圳58网站建设做满屏网站的尺寸
  • 深圳企业网站制作中心我要做一个网站 需要营业范围吗
  • 生活服务网站开发网站建设项目甘特图