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

校园二手网站开发的意义广西工程建设质量管理协会网站

校园二手网站开发的意义,广西工程建设质量管理协会网站,合肥市城乡城乡建设局网站,建设网站哪家便宜二叉搜索树的最小绝对差 二叉搜索树(Binary Search Tree,简称 BST)是一种特殊的二叉树,它的每个节点都满足以下条件: 左子树上所有节点的值均小于该节点的值;右子树上所有节点的值均大于该节点的值&#…
  1. 二叉搜索树的最小绝对差

二叉搜索树(Binary Search Tree,简称 BST)是一种特殊的二叉树,它的每个节点都满足以下条件:

  1. 左子树上所有节点的值均小于该节点的值;
  2. 右子树上所有节点的值均大于该节点的值;
  3. 左右子树都是二叉搜索树。

因此,对于一棵二叉搜索树,中序遍历得到的结果是一个有序的数组。而本题就是要求在一个二叉搜索树中找到任意两个节点的差的绝对值的最小值。

解题思路:

  1. 对二叉搜索树进行中序遍历,得到一个有序数组。
  2. 遍历该有序数组,计算相邻两个元素的差值,找到其中最小的即可。

代码实现:

class Solution {
public:int getMinimumDifference(TreeNode* root) {vector<int> nums; // 中序遍历得到的有序数组inorder(root, nums);int minDiff = INT_MAX;for (int i = 1; i < nums.size(); i++) {minDiff = min(minDiff, abs(nums[i] - nums[i-1])); // 计算相邻两个元素的差值}return minDiff;}// 中序遍历二叉搜索树void inorder(TreeNode* root, vector<int>& nums) {if (!root) return;inorder(root->left, nums);nums.push_back(root->val);inorder(root->right, nums);}
};

时间复杂度:O(n),其中 n 是二叉搜索树中节点的个数。

  1. 二叉搜索树中的众数

这道题要求我们找到二叉搜索树中出现次数最多的元素。

解题思路:

  1. 对二叉搜索树进行中序遍历,得到一个有序数组。
  2. 遍历该有序数组,计算每个元素出现的次数,找到出现次数最多的元素即可。

代码实现:

class Solution {
public:vector<int> findMode(TreeNode* root) {vector<int> nums; // 中序遍历得到的有序数组inorder(root, nums);vector<int> res; // 众数的结果集int maxCount = 0, count = 0;for (int i = 0; i < nums.size(); i++) {count++; // 统计当前元素出现的次数if (i == nums.size() - 1 || nums[i] != nums[i+1]) { // 如果当前元素和下一个元素不相等,说明当前元素的出现次数统计完成if (count > maxCount) { // 如果当前元素的出现次数大于已知的最大出现次数,更新结果集res.clear();res.push_back(nums[i]);maxCount = count;} else if (count == maxCount) { // 如果当前元素的出现次数等于已知的最大出现次数,加入结果集res.push_back(nums[i]);}count = 0; // 重置计数器}}return res;}// 中序遍历二叉搜索树void inorder(TreeNode* root, vector<int>& nums) {if (!root) return;inorder(root->left, nums);nums.push_back(root->val);inorder(root->right, nums);}
};

时间复杂度:O(n),其中 n 是二叉搜索树中节点的个数。

  1. 二叉树的最近公共祖先

这道题要求我们找到二叉树中任意两个节点的最近公共祖先。

解题思路:

我们可以采用递归的方式来解决该问题。对于当前节点,分别递归遍历其左右子树,如果左子树返回的结果不为空,右子树返回的结果也不为空,则说明当前节点为 p 和 q 的最近公共祖先;如果左子树返回的结果为空,则说明 p 和 q 只可能在右子树中,返回右子树的结果;如果右子树返回的结果为空,则说明 p 和 q 只可能在左子树中,返回左子树的结果。

代码实现:

class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (!root || root == p || root == q) return root; // 如果当前节点为空或者等于 p 或 q 中的任意一个,直接返回该节点TreeNode* left = lowestCommonAncestor(root->left, p, q); // 递归遍历左子树TreeNode* right = lowestCommonAncestor(root->right, p, q); // 递归遍历右子树if (left && right) return root; // 如果左子树返回的结果不为空,右子树返回的结果也不为空,则当前节点为 p 和 q 的最近公共祖先return left ? left : right; // 如果左子树返回的结果为空,则说明 p 和 q 只可能在右子树中,返回右子树的结果;如果右子树返回的结果为空,则说明 p 和 q 只可能在左子树中,返回左子树的结果。}
};

时间复杂度:O(n),其中 n 是二叉树中节点的个数。

http://www.yayakq.cn/news/681476/

相关文章:

  • 电商网站的银行支付接入该怎么做百度提交
  • 网站上线 串词wordpress word上传
  • 常州交通建设管理有限公司网站北京广告设计公司
  • 柯林建站程序大宗商品现货交易规则
  • 低功耗集成主板做网站让顾客进店的100条方法
  • 网站建设_app开发赣州网红打卡旅游景点
  • 查看一个网站的源代码做评价苏州企业排名
  • 网站建设功能的策划书网站开发职业要求
  • 网站建设平台官网河间米各庄视频推广软件
  • 南山网站优化短视频拍摄剪辑培训班
  • 遂宁网站建设公司哪家好腾讯云做视频网站
  • 云南省建设考试中心网站怎样找网站
  • 母版页做网站例子手机上怎么安装wordpress
  • 网站推广文案wordpress html5 主题
  • 浙江公司网站建设推广手工制作小玩具简单又好玩
  • 技能培训中心网站建设seo教程pdf
  • 网站主页面设计扬州工程建设信息网站
  • 如何看网站是否有做网站地图离线发布wordpress
  • 建设数据库网站需要哪些设备漳州做网站
  • 全能网站服务器上海网络推广排名公司
  • 深圳网站建设deyond网站建设推广机构
  • 手机微网站尺寸自己做公司的网站
  • 内蒙古兴安盟建设局网站微信小程序开发框架
  • 武侯区建设局门户网站手机版刷赞网站建设
  • jsp购物网站开发视频wordpress详细介绍
  • 手机网站有哪些网站友情链接出售
  • 自助餐火锅网站建设哪里长沙网站开发
  • 服装做外贸的网站建设做网站 做手机app要学什么软件
  • 织梦程序如何搭建网站深圳网站平台
  • 专业网站制作公司案例淄博网站建设公司三农