【代码随想录】刷题Day20

news/2024/10/18 14:16:08/

1.最大二叉树

654. 最大二叉树

这题与中序和后序构造二叉树有点相似

其实思路都是划分区域来构建二叉树,这里的构造是在区间范围内找到最大值

1.返回值为TreeNode*,参数为nums和规定取值范围的左右标志

2.如果left>right,说明此时递归结束,返回nullptr

3.首先建立节点才能在后续的左右节点建立关系,因此我们需要使用中序遍历。首先找出left到right范围内最大值和最大值的位置,此后构建节点,节点的left和right进行递归,传入的值分别是left,mid-1和mid+1,right。

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

2.合并二叉树

617. 合并二叉树

此题其实就是构建二叉树,无非有一个注意的点是,root1和root2是否为空的问题

1.如果root1和root2都为空,那么说明本次递归结束,我们返回nullptr即可

2.依然采用的是前序遍历,中间节点的操作就是构造节点,首先构造节点指针,判断节点的情况:

如果两个节点都不为空,那么我们构造的节点值要二者相加,随后遍历root1和root2的左右节点

如果其中节点都为空,那么我们构造的节点值为另一个数,随后遍历空节点也要传入nullptr使得下一层的递归不越界访问

class Solution {
public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2){if(root1==nullptr&&root2==nullptr)return nullptr;TreeNode* root = nullptr;if(root1&&root2){root = new TreeNode(root1->val+root2->val);root->left=mergeTrees(root1->left, root2->left);root->right=mergeTrees(root1->right, root2->right);}else if(root1){root = new TreeNode(root1->val);root->left=mergeTrees(root1->left, nullptr);root->right=mergeTrees(root1->right, nullptr);}else{root = new TreeNode(root2->val);root->left=mergeTrees(nullptr, root2->left);root->right=mergeTrees(nullptr, root2->right);}return root;}
};

3.二叉搜索树的二分查找

700. 二叉搜索树中的搜索

其思想就是二分

1.如果root为nullptr,说明遍历结束

2.如果root的值与val相同,直接返回该root

3.如果不等,大于val要往左边递归找,小于val要往右边递归找

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

4.检验二叉搜索树

98. 验证二叉搜索树

检验二叉搜索树的方法就是左边是否小于根节点,右边是否大于根节点

需要注意的是,我们不能只看三个节点之间的比较,因为这样是不够的,打个比方:一个节点的右节点确实大于根节点,但是右节点的的左节点不仅小于右节点,还小于根节点,虽然它不是二叉搜索树,但是我们如果只是比较根左右的关系,那么一定是失败的。

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

http://www.ppmy.cn/news/64567.html

相关文章

tiechui_lesson05_内核小文件拷贝

主要学习在内核中的文件操作&#xff0c;包括文件的打开&#xff0c;创建&#xff0c;读取&#xff0c;写入&#xff0c;查询文件属性等。 涉及的API和宏函数 ZwOpenFileZwCreateFileZwQueryInformationFileZwReadFileZwWriteFileZwCloseInitializeObjectAttributes 1.文件的…

springboot整合jave2实现音频格式转换

java中处理音频的常用框架 首先了解FFmpeg FFmpeg是一款开源软件&#xff0c;用于生成处理多媒体数据的各类库和程序。FFmpeg可以转码、处理视频和图片&#xff08;调整视频、图片大小&#xff0c;去噪等&#xff09;、打包、传输及播放视频。作为最受欢迎的视频和图像处理软…

vector、deque、list相关知识点

vector erase返回迭代器指向删除元素后的元素insert返回迭代器指插入的元素reserve只给容器底层开指定大小内存空间&#xff0c;并不添加新元素 deque 底层数据结构 动态开辟的二维数组&#xff0c;一维数组从2开始&#xff0c;以2倍方式扩容&#xff0c;每次扩容和&#x…

Windows服务搭建web网站,使用cpolar内网穿透实现公网访问

文章目录 概述1. 搭建一个静态Web站点2. 本地浏览测试站点是否正常3. 本地站点发布公网可访问3.1 安装cpolar内网穿透3.2 创建隧道映射公网地址3.3 获取公网URL地址 4. 公网远程访问内网web站点5. 配置固定二级子域名5.1 保留二级子域名5.2 配置二级子域名 6. 测试访问二级子域…

一篇文章带您区分GNSS欺骗模拟测试的两种方式

写在前面 注意&#xff1a;提供的设备与案例、使用指南等指导性文件是为了在测试环境中对接收机的抗干扰能力进行验证&#xff0c;而非出于欺骗或干扰真实环境中的GNSS信号的目的&#xff01;请确保通过线缆连接应用或暗室应用&#xff0c;若因为违规使用产生的任何法律后果和…

1703_LibreOffice常用功能使用体验

全部学习汇总&#xff1a; GreyZhang/windows_skills: some skills when using windows system. (github.com) 首先需要说明的是我不是一个重度Office用户&#xff0c;甚至算不上一个重度的Office用户。我使用的Office软件最多的功能就是文档编辑&#xff0c;绝大多数时候还是文…

VUE 学习笔记(三) Vue 渲染流程详解

在 Vue 里渲染一块内容&#xff0c;会有以下步骤及流程&#xff1a; 第一步&#xff0c;解析语法&#xff0c;生成AST 第二步&#xff0c;根据AST结果&#xff0c;完成data数据初始化 第三步&#xff0c;根据AST结果和DATA数据绑定情况&#xff0c;生成虚拟DOM 第四步&…

5个PPT素材、模板网站,免费下载,赶紧马住了~

推荐几个可以免费下载PPT素材的网站&#xff0c;建议收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYwNDUx 菜鸟图库网有非常丰富的免费素材&#xff0c;像设计类、办公类、自媒体类等素材都很丰富。PPT模板种类很多&#xff0c;全部都…