算法专题[递归-搜索-回溯-2-DFS]

算法专题[递归-搜索-回溯-2-DFS]

  • 一.计算布尔二叉树的值:
    • 1.思路一:
    • 2.GIF题目解析
  • 二.求根节点到叶子节点的数字之和
    • 1.思路一:
    • 2.GIF题目解析
  • 三.二叉树剪枝
    • 1.思路一:
    • 2.GIF题目解析
  • 四.验证二叉搜索树
    • 1.思路一:
    • 2.GIF题目解析
  • 五.二叉搜索树中第k小的元素
    • 1.思路一:
    • 2.GIF题目解析
  • 六.二叉树的所有路径
    • 1.思路一:
    • 2.GIF题目解析

一.计算布尔二叉树的值:

在这里插入图片描述
计算布尔二叉树的值

1.思路一:

在这里插入图片描述

class Solution {
public:bool evaluateTree(TreeNode* root) {if(root->left==nullptr && root->right==nullptr)return (root->val==1? true:false);bool left = evaluateTree(root->left);bool right = evaluateTree(root->right);return root->val = (root->val==2? (left||right):(left&&right));}
};

2.GIF题目解析

在这里插入图片描述

二.求根节点到叶子节点的数字之和

在这里插入图片描述
求根节点到叶子节点的数字之和

1.思路一:

在这里插入图片描述

class Solution {
public:int dfs(TreeNode* root , int sum){if(root==nullptr)return 0;sum = (sum*10)+(root->val);if(root->left==nullptr && root->right==nullptr){return sum;}int ret = 0 ;if(root->left != nullptr) ret += dfs(root->left , sum );if(root->right != nullptr) ret += dfs(root->right , sum );return ret;}int sumNumbers(TreeNode* root) {return dfs(root , 0);;}
};

2.GIF题目解析

在这里插入图片描述

三.二叉树剪枝

在这里插入图片描述

二叉树剪枝

1.思路一:

在这里插入图片描述

class Solution {
public:TreeNode* pruneTree(TreeNode* root) {if(root==nullptr)return nullptr;root->left = pruneTree(root->left);root->right = pruneTree(root->right);if(root->left==nullptr && root->right==nullptr && root->val==0){delete root;root = nullptr;}return root;}
};

2.GIF题目解析

请添加图片描述

四.验证二叉搜索树

在这里插入图片描述
验证二叉搜索树

1.思路一:

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

2.GIF题目解析

五.二叉搜索树中第k小的元素

在这里插入图片描述
二叉搜索树中第k小的元素

1.思路一:

在这里插入图片描述

class Solution {
public:void dfs_1(vector<int>& dfs1 , TreeNode* root){if(root==nullptr)return;int n = root->val;dfs1.push_back(n);dfs_1(dfs1 , root->left);dfs_1(dfs1 , root->right);}int kthSmallest(TreeNode* root, int k) {//1.遍历:vector<int> dfs;dfs_1(dfs ,root);//2.排序:sort(dfs.begin(),dfs.end());return dfs[k-1];}
};

2.GIF题目解析

六.二叉树的所有路径

在这里插入图片描述
二叉搜索树的所有路径

1.思路一:

1.模拟路径去走判断到叶子节点然后给一个参数去push_back()
2.思路的函数参数是比较好的通过这样的参数可以解决很多问题。
3.特殊情况判断:只有一个节点的判断!

class Solution {
public:void dfs(TreeNode* root , string s , vector<string>& ret){if(root == nullptr)return;int n = root->val;s += "->";s += to_string(n);//表示当前是叶子节点if(root->left == nullptr && root->right==nullptr){ret.push_back(s);return;}dfs(root->left , s , ret);dfs(root->right , s , ret);}vector<string> binaryTreePaths(TreeNode* root) {string s = to_string(root->val);vector<string> ret;if(root->left == nullptr && root->right==nullptr){ret.push_back(s);}else{dfs(root->left , s , ret);dfs(root->right , s , ret);}return ret;}
};

2.GIF题目解析

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

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

相关文章

1.2 数据模型

数据模型是对现实世界数据特征的抽象&#xff0c;是现实世界的模拟 数据模型是用来描述数据、组织数据和对数据进行操作的 数据模型应满足三方面要求&#xff1a; 1 能比较真实地模拟现实世界 2 容易为人所理解 3 便于在计算机上实现 数据模型…

08. Springboot集成webmagic实现网页爬虫

目录 1、前言 2、WebMagic 3、Springboot集成Webmagic 3.1、创建Springboot&#xff0c;并引入webmagic依赖 3.2、定义PageProcessor 3.3、元素选择 3.3.1、F12查看网页元素 3.3.2、元素选择 3.3.3、注意事项 4、小结 1、前言 在信息化的时代&#xff0c;网络爬虫已…

QT的绘图系统QPainterDevice与文件系统QIODevice

QT的绘图系统&#xff08;QPainterDevice&#xff09;与文件系统&#xff08;QIODevice&#xff09; 文章目录 1、Qt 的绘图系统1、QPainter的使用2、QPen(画笔&#xff09;及QBursh&#xff08;画刷&#xff09;3、手动更新窗口4、绘图设备1、四种绘图设备的 区别2、 QBitmap3…

零食折扣店,注定昙花一现?

年终岁末&#xff0c;又到了各类休闲零食产品一年一度的销售旺季。与过去不同的是&#xff0c;近年来的休闲零食赛道正因大量零食折扣店的涌现而显得热闹非凡。 随着主打折扣、低价的零食折扣店成为消费者特别是三四线下沉市场消费者的新宠&#xff0c;资本开始涌入并快速推动…

SpringCloud之OpenFeign的学习、快速上手

1、什么是OpenFeign OpenFeign简化了Http的开发。在RestTemplate的基础上做了封装&#xff0c;在微服务中的服务调用发送网络请求起到了重要的作用&#xff0c;简化了开发&#xff0c;可以让我们跟写接口一样调其他服务。 并且OpenFeign内置了Ribbon实现负载均衡。 官方文档…

69.使用Go标准库compress/gzip压缩数据存入Redis避免BigKey

文章目录 一&#xff1a;简介二&#xff1a;Go标准库compress/gzip包介绍ConstantsVariablestype Headertype Reader 三&#xff1a;代码实践1、压缩与解压工具包2、单元测试3、为何压缩后还要用base64编码 代码地址&#xff1a; https://gitee.com/lymgoforIT/golang-trick/t…

SpringBoot3整合OpenAPI3(Swagger3)

文章目录 一、引入依赖二、使用1. OpenAPIDefinition Info2. Tag3. Operation4. Parameter5. Schema6. ApiResponse swagger2更新到3后&#xff0c;再使用方法上发生了很大的变化&#xff0c;名称也变为OpenAPI3。 官方文档 一、引入依赖 <dependency><groupId>…

汇编语言学习1

Compiler Explorer (godbolt.org) 这个网站可以把我们写的C语言等实时翻译为汇编等语言&#xff0c;便于参考 一个不错的视频讲解 riscv(RISC-V)指令集(MIT) A01 Introduction_哔哩哔哩_bilibili risc-v汇编中&#xff0c;a0, a1, ... 用来传送函数参数&#xff0c;a0, a1用来…

深度解析Python关键字:掌握核心语法的基石(新版本35+4)

目录 关键字 keyword 关键字列表 kwlist softkwlist 关键字分类 数据类型 True、False None 运算类型 and、or、not in is 模块导入 import 辅助关键字 from、as 上下文管理 with 占位语句 pass 流程控制 if、elif、else for while break、continue…

【AI】深度学习在编码中的应用(8)

接上文&#xff0c;本文来梳理和学习智能编码中&#xff0c; 基于残差编码的框架。 智能图像编解码器的成功也推动了智能视频编解码器的发展。传统的视频压缩方法依靠预测编码对运动信息和残差信息分别进行编码。根据时-空域冗余消除方式和阶段不同&#xff0c;现有相关方法可…

字符串操作scanf与gets的区别

在c语言中对于字符串的输入 scanf char str[20]; scanf("%s",str); gets char str[20]; gets(str); 区别&#xff1a; 1. scanf不能获取空格之后的字符串 例如&#xff1a; "how are you" 使用scanf("%s",str)只能获取到 "how&q…

常见异常类及异常对象属性

程序运行的过程中&#xff0c;会发生各种非正常状况&#xff0c;比如程序运行时磁盘空间不足&#xff0c;网络连接中断&#xff0c;被操作的文件不存在。(异常在程序运行时发生)   针对这种情况下&#xff0c;C#程序引入了异常处理机制&#xff0c;通过异常处理机制对程序运行…

第十回 朱贵水亭施号箭 林冲雪夜上梁山-FreeBSD/Linux 控制台基础操作

林冲被众庄客捉住&#xff0c;吊在门楼下&#xff0c;正被打时&#xff0c;柴进来了&#xff0c;赶快把林冲救下来。原来这是柴进打猎用的小庄子&#xff0c; 林冲就把火烧草料场一事跟柴进详细的说了。柴进说兄弟真是命运多磨难啊。林冲住了几日&#xff0c;恐怕连累柴进&…

柠檬微趣面试准备

简单介绍一下spring原理 Spring框架是一个开源的Java应用程序框架&#xff0c;它提供了广泛的基础设施支持&#xff0c;帮助开发者构建Java应用程序。Spring的设计原则包括依赖注入&#xff08;DI&#xff09;和面向切面编程&#xff08;AOP&#xff09;等&#xff0c;以促使代…

rust嵌入式之用类函数宏简写状态机定义

笔者一向认为&#xff0c;用有限状态自动机来做硬件控制是最好的选择&#xff0c;同时又倾向于用文本定义来定义状态机是更好的做法。所以此次用rust开发嵌入式自然也是如此。 状态机实现起来很简单&#xff0c;关键是用文本来定义状态机&#xff0c;在rust中&#xff0c;自然…

Laykefu客服系统 任意文件上传漏洞复现

0x01 产品简介 Laykefu 是一款基于workerman+gatawayworker+thinkphp5搭建的全功能webim客服系统,旨在帮助企业有效管理和提供优质的客户服务。 0x02 漏洞概述 Laykefu客服系统/admin/users/upavatar.html接口处存在文件上传漏洞,而且当请求中Cookie中的”user_name“不为…

[学习笔记]刘知远团队大模型技术与交叉应用L3-Transformer_and_PLMs

RNN存在信息瓶颈的问题。 注意力机制的核心就是在decoder的每一步&#xff0c;都把encoder的所有向量提供给decoder模型。 具体的例子 先获得encoder隐向量的一个注意力分数。 注意力机制的各种变体 一&#xff1a;直接点积 二&#xff1a;中间乘以一个矩阵 三&#xff1a;…

找不到vcruntime140_1.dll无法继续执行怎么办?全面分析修复方法

当系统提示vcruntime140_1.dll文件出现错误时&#xff0c;可能会引发一系列影响计算机正常运行的问题。这个特定的动态链接库文件&#xff08;DLL&#xff09;是Microsoft Visual C Redistributable的一部分&#xff0c;对于许多基于Windows的应用程序来说至关重要。一旦vcrunt…

如何在供应链管理中有效管理供应商和采购成本

一、管理供应商 在供应链管理中,供应商的管理是至关重要的环节。有效的供应商管理不仅可以确保稳定的原材料供应,还可以降低采购成本,提高企业的竞争力。以下是一些管理供应商的有效方法: 供应商评估与选择在选择供应商之前,企业需要对潜在供应商进行全面的评估。评估标准…

回归预测 | Python基于ALO-BiGRU蚁狮优化算法优化双向BiGRU多变量回归预测+适应度曲线+多个评价指标

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 ALO算法是Mirjalili于2015提出的一种新型元启发式群智能算法。由于引入了随机游走、轮盘赌策略及精英策略&#xff0c;使得 ALO 算法成为一种种群多样、寻优性能强、调节参数少、易于实现的搜索技术 python代码 优化参…