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

二叉树(二)

98.验证二叉树

中序遍历二叉树,每次遍历存下当前节点的值,遍历到下一个节点比较,根据二叉搜索树的特性,左<中<右有:

如果当前值小于或等于上一个的值,说明不是二叉搜索树

如果当前值大于上一个节点的值,继续遍历直到遍历完整棵树

    TreeNode* pre = NULL;bool isValidBST(TreeNode* root) {if (root == NULL) return true;bool lf = isValidBST(root->left);if (pre && pre->val >= root->val) return false; pre = root;bool rg = isValidBST(root->right);return lf&&rg;}

530. 二叉搜索树的最小绝对差

根据二叉搜索树的特性,最小绝对查一定出现在一颗子树的根和他的左右儿子的差值上,依旧使用中序遍历

    int res = INT_MAX;TreeNode* pre = NULL;int getMinimumDifference(TreeNode* root) {if (root == NULL) return res;int lf = getMinimumDifference(root->left);if (pre) {int a = root->val - pre->val;res = min(res, a);}pre = root;int rg = getMinimumDifference(root->right);return res;}

501.二叉搜索树中的众数

一个比较直接的方法就是用map存每一个值出现的频率,然后导出最大频率对应的数值

既然是二叉搜索树,还是采用中序遍历来实现对结果处理

 vector<int> res;TreeNode* pre = NULL;int count1 = 0; // 用来计算频率int count2 = 0;// 用来存最大频率void dfs(TreeNode* root){if (root == NULL) return;dfs(root->left);if (pre == NULL) count1 = 1;else if (pre->val == root->val) count1++;else count1 = 1;pre = root;if (count1 == count2) res.push_back(root->val); // 出现最大频率就将root放进结果集,这可以用来处理多个众数的情况if (count1 > count2) { // 出现频率更高的数,清空结果集,并将该数加入数组count2 = count1;res.clear();res.push_back(root->val);}dfs(root->right);return;}vector<int> findMode(TreeNode* root) {count1 = 0;count2 = 0;res.clear();dfs(root);return res;}

相关文章:

  • day20 奇异值SVD分解
  • Python训练营打卡Day43
  • lanqiaoOJ 1508:N皇后问题 ← dfs
  • pcie 日常问答-20250528
  • 域自适应 (Domain Adaptation,DA)基础
  • Qt开发:QThreadPool的介绍和使用
  • 多模态大模型中的Projector模块深度解析
  • 5月底 端午节
  • 红黑树与红黑树的插入——用C++实现
  • 查询去重使用 DISTINCT 的性能分析
  • 图神经网络原理及应用简介
  • VS2022下C++ Boost库安装与使用使用
  • 血管的三维重建
  • 【Java】mybatis-plus乐观锁与Spring重试机制
  • 【Typst】5.文档结构元素与函数
  • 【计算机网络 第8版】谢希仁编著 第六章应用层 题型总结1 编码
  • JavaScript 递归构建树形结构详解
  • 闲谈PMIC和SBC
  • Message=“HalconDotNet.HHandleBase”的类型初始值设定项引发异常
  • v4l2常见操作-查看当前摄像头信息,帧率,控制参数,分辨率,支持格式,抓图实践等
  • 免费建站怎么操作/大数据精准营销案例
  • 厦门网站建设费用/百度竞价关键词查询
  • 网站建设延期报告/站长seo推广
  • 沈阳网站建设方案/产品线上营销推广方案
  • 衡水企业网站制作公司/搜索引擎优化教程
  • html做分页的网站/论文收录网站排名