算法打卡 Day23(二叉树)-二叉搜索树的最小绝对差 + 二叉搜索树中的众数 + 二叉树的最近公共祖先

news2024/11/15 23:38:03

文章目录

  • Leetcode 530-二叉搜索树的最小绝对差
    • 题目描述
    • 解题思路
  • Leetcode 501-二叉搜索树中的众数
    • 题目描述
    • 解题思路
  • Leetcode 236-二叉树的最近公共祖先
    • 题目描述
    • 解题思路

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

题目描述

https://leetcode.cn/problems/minimum-absolute-difference-in-bst/description/

在这里插入图片描述

解题思路

采用双指针的方法指向当前节点和前一个节点,从而计算相邻元素的差值,并与当前的最小值进行比较。

class Solution {
public:
    int minResult = INT_MAX;
    TreeNode* pre = nullptr;
    void traversal(TreeNode* root) {
        if (root == nullptr)return;
        traversal(root->left);
        if (pre != nullptr) minResult = min(minResult, root->val - pre->val);
        pre = root;
        traversal(root->right);
    }
    int getMinimumDifference(TreeNode* root) {
        traversal(root);
        return minResult;
    }
};

Leetcode 501-二叉搜索树中的众数

题目描述

https://leetcode.cn/problems/find-mode-in-binary-search-tree/description/

在这里插入图片描述

解题思路

二叉搜索树(BST)的重新定义:

  • 结点左子树中所含节点的值 小于等于 当前节点的值
  • 结点右子树中所含节点的值 大于等于 当前节点的值
  • 左子树和右子树都是二叉搜索树

返回的是众数的集合,因为可能有多个数出现的频率相同

class Solution {
public:
    int maxTime = 0;
    vector<int>result;
    TreeNode* pre = nullptr;
    unordered_map<int,int>map;
    void traversal(TreeNode* root) {
        if (root == nullptr)return;
        traversal(root->left);
        map[root->val]++;
        if (pre == nullptr)map[root->val] = 1;
        else if (pre->val == root->val)map[root->val]++;
        if (map[root->val] > maxTime) {
            result.clear();
            result.push_back(root->val);
            maxTime = map[root->val];
        }
        else if (map[root->val] == maxTime)result.push_back(root->val);
        pre = root;
        traversal(root->right);
    }
    vector<int> findMode(TreeNode* root) {
        traversal(root);
        return result;
    }
};

Leetcode 236-二叉树的最近公共祖先

题目描述

https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/description/

在这里插入图片描述

解题思路

采用后序遍历,左右的处理逻辑是当遇到 p 或者 q 时向上返回,中节点则判断其左右子节点的返回值是否为空,如果均不为空,则为最近公共祖先。

class Solution {
public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        if (root == nullptr)return nullptr;
        if (root == p || root == q)return root;
        TreeNode* left =  lowestCommonAncestor(root->left,p,q);
        TreeNode* right = lowestCommonAncestor(root->right,p,q);
        if (left != nullptr && right != nullptr)return root;
        else if (left != nullptr && right == nullptr) return left;
        else if (left == nullptr && right != nullptr)return right;
        else return nullptr;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2047079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

萌啦数据使用多久,萌啦数据价格表2024

在数字化浪潮汹涌的今天&#xff0c;数据已成为企业决策与业务增长的核心驱动力。在众多数据分析工具中&#xff0c;萌啦数据凭借其强大的数据处理能力、直观的数据可视化效果以及灵活的数据分析模型&#xff0c;赢得了众多企业和个人的青睐。那么&#xff0c;关于“萌啦数据使…

C++ | Leetcode C++题解之第341题扁平化嵌套列表迭代器

题目&#xff1a; 题解&#xff1a; class NestedIterator { private:vector<int> vals;vector<int>::iterator cur;void dfs(const vector<NestedInteger> &nestedList) {for (auto &nest : nestedList) {if (nest.isInteger()) {vals.push_back(n…

苍穹外卖项目DAY05

苍穹外卖项目DAY05 1、店铺营业状态设置 1.1、Redis入门 Redis简介 Redis是一个基于内存的key-value结构数据库 基于内存存储&#xff0c;读写性能高适合存储热点数据&#xff08;热点商品、咨询、新闻&#xff09;企业应用广泛 中文网&#xff1a;https://www.redis.net…

FSOP,glibc-2.23攻击IO_list_all

文章目录 FSOP介绍&#xff1a;FOSP链执行流程&#xff1a;源码调试过程 FSOP 介绍&#xff1a; FSOP 是 File Stream Oriented Programming 的缩写&#xff0c;根据前面对 FILE 的介绍得知进程内所有的 _ IO_FILE 结构会使用 _ chain 域相互连接形成一个链表&#xff0c;这个…

景联文科技:一文详解如何构建高质量SFT数据

在图像处理和计算机视觉领域中&#xff0c;将一张图像转化为可用于训练机器学习模型的数据是一项复杂而重要的任务。SFT&#xff08;Supervised Fine-Tuning&#xff0c;监督微调&#xff09;是一种常见的深度学习策略&#xff0c;在这一过程中发挥着核心作用。 SFT是指在一个预…

【云备份】服务端模块-热点管理

文章目录 0.回顾extern1.介绍2.实现思想3.代码测试代码 0.回顾extern extern cloudBackup::DataManager *_dataManager extern 关键字用于声明一个全局变量或对象&#xff0c;而不定义它。这意味着 _dataManager 是一个指向 cloudBackup::DataManager 类型的指针&#xff0c;但…

外部接入tensorboard和Jupyter Notebook

本地端打开服务器端jupyter Notebook 1:服务器端在目标文件夹下输入jupyter notebook --no-browser --port8888&#xff08;留意下token&#xff09; 2&#xff1a;本地端打开git 的bash窗口输入ssh -L 8888:localhost:8888 warren10.12.14.187 warren为用户名&#xff0c;10…

get 请求获取不到参数,但是post参数可以获取到

一&#xff1a;测试代码时发现&#xff0c;get请求一直获取不到参数。最终原因如下&#xff0c;nginx配置中需求有下面的配置 $args&#xff1a;代表接受到的参数

MemFire Cloud是否真的可以取代后端

近年来&#xff0c;随着前端技术的迅速发展&#xff0c;前端工程师们越来越多地开始思考一个问题&#xff1a;“我还能不能不依赖后端&#xff1f;” 这种想法并非空穴来风&#xff0c;尤其是随着像MemFire Cloud这样的工具出现&#xff0c;它不仅能让开发者在没有后端的情况下…

2. springboot集成kafka入门使用教程

项目demo地址 : https://mp.weixin.qq.com/s?__bizMzkzODQyNzE3 1. 项目结构 ─src├─main│ ├─java│ │ └─org│ │ └─example│ │ │ KafkaApplication.java│ │ ││ │ └─demo│ │ KafkaConsume…

跟李沐学AI:目标检测、锚框

边缘框 用于表示物体的位置&#xff0c;一个边缘框通过四个数字定义&#xff1a;(坐上x, 左上y, 右下x, 右下y)或&#xff08;左上x, 左上y, 宽, 高&#xff09; 通常物体检测或目标检测的数据集比图片分类的数据集小很多&#xff0c;因为物体检测数据集标注成本高很多。 目…

音视频相关知识

H.264编码格式 音频 PCM就是要把声音从模拟信号转换成数字信号的一种技术&#xff0c;他的原理简单地说就是利用一个固定的频率对模拟信号进行采样。 pcm是无损音频音频文件格式

【Qt】QWidget的font属性

QWidget的font属性 API说明 font() 获取当前 widget 的字体信息. 返回 QFont 对象. setFont(const QFont& font) 设置当前 widget 的字体信息. 关于Qfont 属性说明 family 字体家族. ⽐如 "楷体", "宋体", "微软雅⿊" 等. pointSiz…

“面试通关秘籍:高频题目与算法整理”

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…

Postman断言

目录 概述 断言工作原理 常用断言方法 Status code: Code is 200 Status code: Successful POST request Status code: Code name has string Response body: Contains string Response body: JSON value check Response body: ls equal to a string Response headers…

鸿萌数据恢复服务:SQL Server 中的 GAM、SGAM、IAM,及数据库损坏的修复方法

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份、网络及终端数据安全等解决方案与服务。 同时&#xff0c;鸿萌是国际主流数据恢复软件(Stellar、UFS、R-Studio、ReclaiMe Pro 等)的授权代理商&#xff0c;为专…

开源的数据库增量订阅和消费的中间件——Cancl

目录 工作原理 MySQL主备复制原理 Canal 工作原理 主要功能和特点 应用场景 实验准备 安装JDK11 下载MySQL8.0 配置canal.admin 配置canal-deployer 测试数据读取 新增一台主机用做被同步的目标机器测试 官方地址&#xff1a;https://github.com/alibaba/canal?ta…

极狐 GitLab 依赖扫描:助力开发者管理软件供应链

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…

LeetCode.22。括号生成

题目描述&#xff1a; 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组 输入输出实例&#xff1a; 思路&#xff1a;对于这道题目我们可以用回溯法&#xff0c;创建一个函数backtrack(当前字符&#xff0c;左括…

解锁 Starknet 的深层洞察:利用 Dune 构建动态数据可视化

原文&#xff1a;https://dev.to/lordghostx/queries-to-insights-visualizing-starknet-data-with-dune-j8p 作者&#xff1a;LordGhostX 编译&#xff1a;TinTinLand Starknet 的链上数据为其区块链生态系统提供了丰富的洞察。它为用户活动、交易模式和网络交互提供了全面…