leetcode算法题之递归--二叉树中的深搜总结

递归的本质是找重复的子问题

文章目录

  • 1.计算布尔二叉树的值
  • 2.从根节点到叶节点数字之和
  • 3.二叉树剪枝
  • 4.验证二叉搜索树
  • 5.二叉搜索树中第K小的元素
  • 6.二叉树的所有路径

1.计算布尔二叉树的值

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

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

2.从根节点到叶节点数字之和

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

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

3.二叉树剪枝

二叉树剪枝
在这里插入图片描述

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;//防止内存泄漏,前提是节点是new出来的root = nullptr;}return root;}
};

4.验证二叉搜索树

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

class Solution {
//性质:二叉搜索树的中序遍历是一个有序的序列long prev = LONG_MIN;
public:bool isValidBST(TreeNode* root) {if(root == nullptr) return true;bool left = isValidBST(root->left);if(left == false) return false;bool cur = false;if(root->val>prev){cur = true;}if(cur == false) return false;prev = root->val;bool right = isValidBST(root->right);return left && right && cur;}
};

5.二叉搜索树中第K小的元素

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

class Solution {
//性质:二叉搜索树的中序遍历是一个有序的序列int count;int ret;
public:int kthSmallest(TreeNode* root, int k) {count = k;dfs(root);return ret;}void dfs(TreeNode* root){if(root == nullptr || count == 0) return;dfs(root->left);count --;if(count == 0) ret = root->val;dfs(root->right);}
};

6.二叉树的所有路径

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

class Solution {vector<string> ret;
public://递归+回溯vector<string> binaryTreePaths(TreeNode* root) {string path;dfs(root,path);return ret;}void dfs(TreeNode* root,string path){path = path+to_string(root->val);if(root->left == nullptr && root->right == nullptr){ret.push_back(path);}path += "->";if(root->left) dfs(root->left,path);if(root->right) dfs(root->right,path);}
};

有什么不懂的可以后台直接私信我嗷!

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

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

相关文章

Spring Cloud + Vue前后端分离-第9章 大文件断点续与极速秒传

源代码在GitHub - 629y/course: Spring Cloud Vue前后端分离-在线课程 ​​​​​​Spring Cloud Vue前后端分离-第9章 大文件断点续与极速秒传 作为一个视频网站&#xff0c;一个文件小则几十M&#xff0c;大则上G&#xff0c;上传一个大文件受网络影响很大&#xff0c;文…

【网络技术】【Kali Linux】Wireshark嗅探(四)域名系统(DNS)

一、实验目的 本次实验使用wireshark流量分析工具进行网络嗅探&#xff0c;旨在了解域名系统&#xff08;DNS&#xff09;的工作原理。 二、域名系统概述 简单来说&#xff0c;域名系统&#xff08;Domain Name System, DNS&#xff09;将域名&#xff08;可以理解为“网址”…

Prometheus-AlertManager 邮件告警

环境,软件准备 本次演示环境&#xff0c;我是在虚拟机上安装 Linux 系统来执行操作&#xff0c;以下是安装的软件及版本&#xff1a; System: CentOS Linux release 7.6Docker: 24.0.5Prometheus: v2.37.6Consul: 1.6.1 docker 安装prometheus,alertmanage,说明一下这里直接将…

智慧农田使用的自动虫情测报灯的作用

TH-CQ3S随着科技的不断进步&#xff0c;智慧农业正在全球范围内兴起。作为智慧农业的重要组成部分&#xff0c;智慧农田已经成为提高农业生产效率、保障农产品质量安全的重要手段。而在智慧农田中&#xff0c;自动虫情测报灯的作用不可忽视。 自动虫情测报灯&#xff0c;顾名思…

代码随想录第三十九天——不同路径,不同路径||

leetcode 62. 不同路径 题目链接&#xff1a;不同路径 确定dp数组以及下标的含义 dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#xff0c;到(i, j) 有dp[i][j]条不同的路径确定递推公式 求dp[i][j]&#xff0c;只能有两个方向推导出来&#xf…

C++大作业——学生选课系统优化版

C大作业——学生选课系统优化版 前言1.学生类和课程类的实现2.输入输出流重载的实现3.增删改查的实现4.多级菜单的实现5.选课和退选的实现5.完整代码 前言 本文是对本人之前写过的一个学生选课系统的优化&#xff0c;整体上的逻辑是和我上一篇博客一样的&#xff08;链接在此&a…

​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 圣诞活动预…

Linux学习(9)——RAID与服务器的常见故障

目录 一、服务器常见故障 1、系统不停重启进入不了系统 2、卡在开机界面右下角有fA B2 H8 3、系统安装不上 4、如何进入服务器的bios 5、一般进入阵列卡的快捷键 6.网络不通 7.硬盘不识别 二、RAID相关知识 1、RAID的概念 2、RAID功能实现 3、RAID实现的方式 三、常…

【算法系列 | 11】深入解析查找算法之—插值查找

序言 心若有阳光&#xff0c;你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏&#xff0c;希望能帮助大家很好的了解算法。主要深入解析每个算法&#xff0c;从概念到示例。 我们一起努力&#xff0c;成为更好的自己&#xff01; 今天第11讲&#xff0c;讲…

RK3568 学习笔记 : 开机上电与串口波特率

前言 开发板&#xff1a;【正点原子】ATK-DLRK3568 开发板&#xff0c;包装什么的看上去有点高大上&#xff0c;也有点贵。。 开发板资料的 Linux-SDK 编译通过了&#xff0c;想尝试第一次上电开机&#xff0c;不过&#xff0c;开始出了一点状况&#xff0c;串口信息是乱码&am…

Python贪吃蛇小游戏(PyGame)

文章目录 写在前面PyGame入门贪吃蛇注意事项写在后面 写在前面 本期内容&#xff1a;基于pygame的贪吃蛇小游戏 实验环境 python3.11及以上pycharmpygame 安装pygame的命令&#xff1a; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygamePyGame入门 pygam…

国家信息安全水平等级考试NISP二级题目卷③(包含答案)

国家信息安全水平等级考试NISP二级题目卷&#xff08;三&#xff09; 国家信息安全水平等级考试NISP二级题目卷&#xff08;三&#xff09;需要报考咨询可以私信博主&#xff01; 前言&#xff1a; 国家信息安全水平考试(NISP)二级&#xff0c;被称为校园版”CISP”,由中国信息…

力扣_day2

两数相加 用python3更方便&#xff0c;有内置的ListNode。 # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next nextclass Solution(object):def cycles(self,head):now headindex 0while(now):index 1now now.…

网络通信(2)-IP地址详解

目录 一、协议IP定义 二、IP地址分类 三、私有地址 四、IP地址的类型 4.1 IPv4

<HarmonyOS第一课>从简单的页面开始

【习题】构建漂亮的页面 目录 判断题 单选题 多选题 判断题 1.在Column容器中的子组件默认是按照从上到下的垂直方向布局的&#xff0c;其主轴的方向是垂直方向&#xff0c;在Row容器中的组件默认是按照从左到右的水平方向布局的&#xff0c;其主轴的方向是水平方向。正确…

算法导论复习——CHP25 多源最短路

问题描述 给定一个带权重的有向图G(V,E)&#xff0c;其权重函数为ω:E→R。 在图中&#xff0c;对所有的结点对 u,v∈V&#xff0c;找出从结点u到结点v的最短路径。 该问题的解以表格&#xff08;二维数组&#xff09;的形式给出&#xff1a;第u行第v列给出从结点u到结…

【ABAQUS复合材料建模】专题

Abaqus复材&#xff0c;线上直播&#xff0c;提供案例&#xff0c;回放视频&#xff0c;群答疑 【ABAQUS复合材料建模】 网格划分、分层合结构、静力失效、热-力耦合、分层/界面损伤、XFEM裂纹扩展、加筋板屈曲、剪切失效、颗粒/短纤维、增韧复材、胞元、自由振动、高\低速冲…

在Linux中以后台静默运行Java应用程序

在Linux系统上运行Java应用程序时&#xff0c;有时我们希望将其设置为后台运行&#xff0c;而关闭终端窗口时不会影响进程的执行。在本文中&#xff0c;我们将介绍几种实现这一目标的方法。 1. 使用nohup命令 nohup是一个用于在后台运行进程的命令&#xff0c;而且关闭终端窗…

C语言实例_math.h库函数功能及其用法详解

一、前言 数学在计算机编程中扮演着至关重要的角色&#xff0c;C语言的math.h头文件提供了一系列的函数和工具&#xff0c;用于数学计算和常用数学函数的实现。这些函数包括数值运算、三角函数、指数对数函数等&#xff0c;为开发人员提供了强大的数学处理能力。本文将对math.…

R语言【CoordinateCleaner】——cc_dupl():根据物种名称和坐标以及用户定义的附加列删除或标记重复的记录

Package CoordinateCleaner version 2.0-20 Parameters cc_dupl(x,lon "decimallongitude",lat "decimallatitude",species "species",additions NULL,value "clean",verbose TRUE ) 参数【x】&#xff1a;data.frame。包含地…