算法打卡 Day22(二叉树)-最大二叉树 + 合并二叉树 + 二叉搜索树中的搜索 + 验证二叉搜索树

news2024/12/25 2:11:07

文章目录

  • Leetcode 654-最大二叉树
    • 题目描述
    • 解题思路
  • Leetcode 617-合并二叉树
    • **题目描述**
    • 解题思路
  • Leetcode 700-二叉搜索树中的搜索
    • **题目描述**
    • 解题思路
  • Leetcode 98-验证二叉搜索树
    • **题目描述**
    • 解题思路

Leetcode 654-最大二叉树

题目描述

https://leetcode.cn/problems/maximum-binary-tree/description/

在这里插入图片描述

解题思路

class Solution {
public:
    TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
        TreeNode* root = new TreeNode(nums[0]);
        if (nums.size() == 1)return root;
        int maxIndex = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] > root->val) {
                root->val = nums[i];
                maxIndex = i;
            }
        }
        if (maxIndex > 0) {
            vector<int> left(nums.begin(), nums.begin() + maxIndex);
            root->left = constructMaximumBinaryTree(left);
        }
        if (maxIndex < nums.size() - 1) {
            vector<int> right(nums.begin() + maxIndex + 1, nums.end());
            root->right = constructMaximumBinaryTree(right);
        }
        return root;
    }
};

Leetcode 617-合并二叉树

题目描述

https://leetcode.cn/problems/merge-two-binary-trees/description/

在这里插入图片描述

解题思路

class Solution {
public:
    TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
        if (root1 == nullptr)return root2;
        if (root2 == nullptr) return root1;
        TreeNode* root = new TreeNode(0);//定义一个新的节点接收结果
        root->val = root1->val + root2->val;
        root->left = mergeTrees(root1->left, root2->left);
        root->right = mergeTrees(root1->right, root2->right);
        return root;
    }
};

Leetcode 700-二叉搜索树中的搜索

题目描述

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

在这里插入图片描述

解题思路

二叉搜索树:二叉搜索树自带顺序,根节点的左子树的节点要比根节点的值都小,右子树的节点的值比根节点的都大。

递归法:

class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) {
        if (root == nullptr || root->val == val) return root;
        TreeNode* result = nullptr;
        if (root->val > val) result = searchBST(root->left, val);
        else if (root->val < val) result = searchBST(root->right, val);
        return result;
    }
};

迭代法:

class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) {
        while (root!=nullptr)
        {
            if (root->val > val) root = root->left;
            else if (root->val < val) root = root->right;
            else return root;
        }
        return nullptr;
    }
};

Leetcode 98-验证二叉搜索树

题目描述

https://leetcode.cn/problems/validate-binary-search-tree/description/

在这里插入图片描述

解题思路

要充分利用二叉搜索树的特性,要使用中序遍历(左中右),在这样的遍历顺序下,遍历的值是逐渐递增的。

要注意二叉搜索树不仅仅是中节点的值大于左节点小于右节点,同时需要保证中节点的值大于左子树的所有值,小于右子树的所有值。

class Solution {
public:
    TreeNode* pre = nullptr;
    bool isValidBST(TreeNode* root) {
        if (root == nullptr)return true;
        bool left = isValidBST(root->left);
        if (pre != nullptr && root->val <= pre->val)return false;
        else pre = root;
        bool right = isValidBST(root->right);
        return left && right;
    }
};

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

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

相关文章

Nginx--虚拟机配置

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 1、什么是虚拟主机 虚拟主机是一种特殊的软硬件技术&#xff0c;它可以将网络上的每一台计算机分成多个虚拟主机&#xff0c;每个虚拟主机可以独立对…

C语言日常练习 Day16

目录 一、求一个3*3的整型矩阵对角线元素之和 二、有一个已经排序好了的数组&#xff0c;要求输入一个数后&#xff0c;按原来排序的规律将它插入数组中 三、输出“魔方阵”&#xff0c;所谓魔方阵是指它的每一行、每一列和对角线之和均相等 一、求一个3*3的整型矩阵对角线元…

3D数据可视化,B/S和C/S架构该如何选择?

针对3D数据可视化的展现形式&#xff0c;有B/S和C/两种架构可以选择&#xff0c;这两者区别是什么&#xff0c;分别有哪些优劣势&#xff0c;又有哪些对应的开发引擎或者软件&#xff0c;该如何选择呢&#xff0c;千汇数据工场通过本文给你讲明白。 一、什么是B/S和C/S模式 在…

DC-6靶机复现

靶机设置 设置靶机为NAT模式 靶机IP发现 nmap 192.168.112.0/24 靶机IP为192.168.112.141 目录扫描 访问浏览器 绑定hosts 再次访问成功 目录拼接 拼接/wp-login.php 发现后台登陆页面 使用webscan扫描 wpscan --url http://wordy -e u 发现了 admin&#xff0c;mark&am…

酷炫时尚未来科技视频开头PR模板MOGRT

这是一个高质量、组织良好、易于定制的pr模板。可以将此模板用于特殊活动、体育揭幕战、演示视频、快速和最小的企业促销。创建旅行介绍、干净的幻灯片、派对开场白和动态幻灯片。为YouTube、Vimeo或其他媒体托管网站创建视频。制作自己的杂志演示卷&#xff0c;展示你的作品集…

qt-13 进度条(模态和非模态)

进度条-模态和非模态 progressdlg.hprogressdlg.cppmain.cpp运行图模态非模态 progressdlg.h #ifndef PROGRESSDLG_H #define PROGRESSDLG_H#include <QDialog> #include <QLabel> #include <QLineEdit> #include <QProgressBar> #include <QCombo…

闲鱼卖1000元的带腾讯备案的 gaapqcloud.com.cn 域名低成本获取方法!

最近在闲鱼看到有人卖域名&#xff0c;声称是腾讯的备案&#xff0c;还卖1000多元&#xff01;逆天了&#xff01;这个信息差是真能割韭菜&#xff0c;我一查&#xff0c;这不就是腾讯云的全球应用加速域名吗&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;这样…

嵌入式day30

管道 --- 半双工通信方式 单工 //广播 --- 单一方向的数据通道 半双工 //对讲机 --- 同一时刻 只能有一个方向 全双工 //手机电话 --- 同一时刻两个方向都可以通信 无名管道 只能用于 亲缘关系进程间 有名管道 是一种特殊的文件 1.存在于 内…

GNN(一)

一、GNN应用领域 芯片设计 场景分析与问题推理 道路交通&#xff0c;动态流量预测 知识图谱 化学医疗等场景 物理模型相关 二、图的基本组成 利用神经网络的目的就是整合特征 图的邻接矩阵 每个像素点周围都有邻居 GAN中数据格式不固定&#xff0c;例如社交网络中人物关…

Processing练习之自动绘制

案例代码如下&#xff1a; import processing.pdf.*; import java.util.Calendar; boolean savePDF false; int maxCount 5000; int currentCount 1; float[] xnew float[maxCount]; float[] ynew float[maxCount]; float[] rnew float[maxCount]; void setup(){ siz…

可视化工具VOFA数据格式介绍

目录 概述 1 认识VOFA 1.1 VOFA特点 1.2 应用简介 2 数据格式介绍 2.1 FireWater格式 2.2 JustFloat格式 概述 本文主要介绍使用可视化工具VOFA打印数据的方法&#xff0c;该工具可以支持字符串类型和float类型的数据可视化操作&#xff0c;使用者只需按照协议要求填充数…

C++ stack、queue、priority_queue【介绍、常用接口、模拟实现】

0.容器适配器 0.1什么是适配器 适配器是一种设计模式&#xff0c;该种模式是将一个类的接口转换成客户希望的另外一个接口。 0.2 STL标准库中stack和queue的底层结构 虽然stack和queue中也可以存放元素&#xff0c;但在STL中并没有将其划分在容器的行列&#xff0c;而是将其…

RabbitMQ 消息可靠保障

RabbitMQ 消息可靠保障 消息的可靠性保证生产端到交换机和队列的可靠性保障解决思路A-确认机制解决思路B-备份交换机 MQ 服务器宕机导致消息丢失消费端消息的可靠性保障 消费端限流 消息的可靠性保证 实际项目中 MQ 的流程一般是&#xff1a;生产端把消息路由到交换机&#xf…

树 状 数 组

可差分信息&#xff1a;如果知道部分的信息&#xff0c;用整体的信息和部分的信息就可以求出剩余部分的信息&#xff0c;那么这个信息是可差分的 P3374 【模板】树状数组 1 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <iostream> #include <vector> u…

【微信小程序】微信小程序开发前的准备

在正式开发微信小程序之前&#xff0c;需要先进行开发前的准备工作&#xff0c;包括&#xff1a; 注册微信小程序开发账号获取微信小程序AppID安装微信开发者工具创建微信小程序项目 一、注册微信小程序开发账号 1. 点击注册按钮 使用浏览器打开 https://mp.weixin.qq.com/…

铁电存储器(FM24W256)I2C读写驱动(3):基于HAL库实现硬件I2C读写

0 参考资料 FM24W256&#xff08;Cypress公司生产&#xff09;数据手册 1 基于HAL库实现硬件I2C读写 1.1 硬件I2C初始化 FM24W256支持最高1MHz的I2C频率&#xff0c;本例也配置为1MHz&#xff0c;相关初始化代码如下&#xff1a; /*** brief 使用硬件I2C的E2P初始化** retur…

【Linux】yum、vim、gcc/g++的使用

目录 一、Linux 软件包管理器 yum 什么是软件包 关于 rzsz 查看软件包★ 如何安装软件★ 如何卸载软件★ Linux 开发工具 二、Linux编译器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 vim操作总结 如果在vim界面不小心按了Ctrl …

[Meachines] [Medium] solidstate Apache JAMES RCE+POP3邮件泄露+定时任务权限提升

信息收集 IP AddressOpening Ports10.10.10.51TCP:22&#xff0c;25&#xff0c;80&#xff0c;110&#xff0c;119&#xff0c;4555 $ nmap -p- 10.10.10.51 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4p1 Debian 10deb9u…

Processing练习之变换颜色

案例代码如下&#xff1a; import generativedesign.*; import processing.pdf.*; import java.util.Calendar; boolean savePDFfalse; int tileCountX 2; //jianbianshuliang int tileCountY10;//hangshu color[] colorsLeft new color[tileCountY]; color[] colorsRightne…