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

天津做网站优化公司wordpress 相册 样式

天津做网站优化公司,wordpress 相册 样式,沙坪坝区优化关键词软件,wordpress怎么改登陆二叉搜索树的最小绝对差 二叉搜索树(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/710079/

相关文章:

  • 网站备案后 还是需要再备案吗玉环做网站有哪些
  • 1g1m wordpress网站优化推广公司推荐
  • 猫咪网站模版下载计算机网站开发是那个语言
  • wordpress做一个网站404引导开发一个公众号需要多少钱
  • 深圳企业网站建设推荐公司购物网站开发和运行环境
  • 同主机网站查询wordpress加载单页面
  • 公司专业设计网站轻量的wordpress
  • 做网站有了空间在备案吗誓做中国最大钓鱼网站
  • 一流的菏泽网站建设网站开发要用cms
  • 朋友圈网站文章怎么做赣州同城网
  • 高性能网站开发北京到广州快递要几天
  • 南宁市网站建设百度快速收录网站
  • 广州学建设网站沈阳专业seo
  • 网站运营管理的内容有哪些同德县公司网站建设
  • 信用体系建设网站手机网站你懂
  • 重庆的电子商务网站angle wordpress
  • 长安外贸网站建设公司重庆建设工程信息网加密狗无法登陆
  • 广告联盟网站建设深圳网站设计九曲
  • 如何做自动采集视频网站源码苏州网站建设网络推广
  • 广州游戏软件开发公司南京seo外包平台
  • 南昌企业网站设计建设制作用python做网站的步骤
  • 有没有可以免费做试卷的网站_最好可以学会...建设英文外贸网站
  • 哪个网站可以做创意短视频论文关键词
  • 网站设计公司推荐网站 建设 开发 协议
  • 网站制作程序重庆慕尚网站建设
  • 专门做选择题的网站做网站卖广告挣几百万
  • 做动态文字的网站网站开发流程介绍
  • 局网站建设合同创业小项目
  • 典当行网站策划萍乡企业网站制作
  • 品牌网站建设哪好品牌建设方式有哪些