当前位置: 首页 > 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;}

http://www.lqws.cn/news/111835.html

相关文章:

  • Windows应用-音视频捕获
  • 嵌入式SDK技术EasyRTC音视频实时通话助力即时通信社交/教育等多场景创新应用
  • Win11系统不推送24H2/西数SSD无法安装24H2 - 解决方案
  • 6.4 note
  • 【请关注】VC内存泄露的排除及处理
  • 数据加密标准(DES)解析及代码实现(java)
  • 解决Vditor加载Markdown网页很慢的问题(Vite+JS+Vditor)
  • 后台管理系统八股
  • VRRP虚拟路由器协议的基本概述
  • 【Bluedroid】蓝牙启动之sdp_init 源码解析
  • Win11/Win10 打不开 gpedit.msc 之 组策略编辑器安装
  • 文件IO流
  • 生成JavaDoc文档
  • 安科电动机保护器通过ModbusRTU转profinet网关与PLC通讯
  • PowerShell脚本编程基础指南
  • Python爬虫解析动态网页:从渲染到数据提取
  • MAU算法流程理解
  • OpenEMMA: 打破Waymo闭源,首个开源端到端多模态模型
  • MPLS-EVPN笔记详述
  • 内存 DC(双缓冲)是个什么东西?
  • RM-R1:基于推理任务构建奖励模型
  • 飞腾D2000,麒麟系统V10,docker,ubuntu1804,小白入门喂饭级教程
  • JavaWeb是什么?总结一下JavaWeb的体系
  • 68道Hbase高频题整理(附答案背诵版)
  • RAG架构中用到的模型学习思考
  • 互联网三高架构 一
  • leetcode46.全排列:回溯算法中元素利用的核心逻辑
  • MUX-VLAN基本概述
  • 项目交付后缺乏回顾和改进,如何持续优化
  • 鸿蒙简易版影视APP案例实战