Leetcode刷题一

news2024/11/19 7:26:35

目录

  • 序言
    • 「结构」
    • 「遍历」
    • 「经验」
    • 「跨父节点」
    • 「题型」

序言

笔记根据labuladong进行总结,极力推荐labuladong算法进行学习!!

0、算法一开始就应该刷树,了解递归的思想。
1、C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”. 类成员用“.”,定义指针用*。

「结构」

//cpp
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
//注意学习new时带入初始值的写法

「遍历」

/* 二叉树遍历框架 */
void traverse(TreeNode root) {
    // 前序遍历
    traverse(root.left)
    // 中序遍历
    traverse(root.right)
    // 后序遍历
}

1、前后中序列遍历指的是父节点的位置
2、写递归算法的关键是要明确函数的「定义」是什么,然后相信这个定义,利用这个定义推导最终结果。以父root与子三个关节点进行考虑含义;先搞清楚

  1. root是否为nullptr
  2. 当前 root 节点该做什么(函数体),获取孩子的值?还是其他,但对象都是root不是child
  3. 然后根据函数定义递归调用子节点,即孩子的null由下一级的递归判断!
  4. 考虑是前后中三种遍历中哪一种

「经验」

1、利用数组索引作为函数的参数,进行递归
2、数据输入,记得要构建树的结点:TreeNode root = new TreeNode(rootVal);
3、遍历就是找,返回void,访问就是改树,返回时treenode
4、return;指的是不再进行深入,可以等同于break;
5、链表和树是一样的思路;

「跨父节点」

做法就是增加函数参数,一个节点做不到,我们就给他安排两个节点,「将每一层二叉树节点连接起来」可以细化成「将每两个相邻节点都连接起来」,然后思考两个root 里面会进行什么操作;
对于增加参数的问题:一般从父子操作会转化为参数和root之间的操作,与孩子没有关系,孩子只是作为递归参数进入到下一轮;所以思考递归函数的参数更新的值怎么写!;
详细见是否为BST的错误代码和正确代码的区别

在这里插入图片描述

「题型」

  1. 二叉搜索树labuladong
  • 是否为BST
    需要对参数
  • BST 的遍历框架
  • 在 BST 中插入一个数
  • 在 BST 中删除一个数
  1. 层序遍历 queue

  2. 构造树:确定根节点的值,把根节点做出来,然后递归构造左右子树即可
    比如通过前序和中序遍历结果构造二叉树

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

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

相关文章

通过指针引用数组的几种方法的原理和差异;以及利用指针引用数组元素的技巧

关于地址,指针,指针变量可以参考这篇文章: 地址,指针,指针变量是什么?他们的区别?符号(*)在不同位置的解释?_juechen333的博客-CSDN博客https://blog.csdn.n…

nginx http模块

模块依赖2. 模块的初始化2.1 location的定义location的定义包含以下几种location [ | ~ | ~* | ^~ ] uri { ... } location name { ... }:表示精确匹配,只有请求的url路径与后面的字符串完全相等时,才会命中,不支持location嵌套~&#xff1a…

有免费的PDF转Word吗?值得收藏的7个免费 PDF转Word工具请收好

PDF 和 DOC 是人们在工作中广泛使用的两种最流行的文档格式。PDF 是 Adobe 的便携式文档格式,DOC 是 Microsoft 的 Word 文档格式。PDF 是一种更安全可靠的文件格式,因为它很难编辑 PDF 文件,但是有一些称为 PDF 编辑器的工具可用于编辑 PDF …

【Linux】工具(4)——make/Makefile

本期博客我们的任务就是搞懂自动化构建工具——make/Makefile一、什么是make/Makefile📌make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make&…

设计模式之创建型模式

一、设计模式分类二、创建型模式1、单例模式1.1 饿汉式(静态变量)1.2 饿汉模式(静态代码块)1.3 懒汉式(线程不安全)1.4 懒汉式(线程安全,同步方法)1.5懒汉式(…

PHP语言

一、PHP简介 什么是 PHP? PHP 是强有力的服务器端脚本语言 PHP 是免费的,并且使用广泛 PHP能够包含文本、HTML、CSS以及PHP代码,在服务器上执行,结果以纯文本返回浏览器。PHP是从C和Perl发展而来的一种非常简单的语言&#xff…

考研流程,可以进来转一转(考研你不知道的事情)(详细版)

之前有听过好多人说要考研,那么,考研的信息,如何获取呢,考研都有哪些流程呢。 初试开始到考试:↓ 1、了解考研信息。 2、确定自己要报考的专业。(本专业or跨考) 3、选择地区 4、选择要报考的学…

TAURI初体验

TAURI初体验 - 一个聊天机器人demo前言一、搭建Tauri apps二、引入库相关vue库三、 业务逻辑1.页面布局2. openai的初始化3. text-davinci-003模型4.gpt-3.5-turbo模型总结前言 一直使用Electron开发桌面应用,时间长了也就腻了。很早之前就关注了Tauri,趁…

尚硅谷SpringCloud Alibaba

1. Cloud Alibaba简介2.Nacos简介和下载3.Nacos安装4.Nacos之服务提供者注册5.Nacos之服务消费者注册和负载6.Nacos服务注册中心对比提升7.Nacos之服务配置中心8.Nacos之命名空间分组和DataID三者关系9.Nacos之DataID配置10.Nacos之Group分组方案11.Nacos之Namespace空间方案12…

基于支持向量机SVM的分类预测,基于SVM的雷击故障识别

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于SVM的雷击故障分类预测 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空…

主流机器学习平台调研与对比分析

梗概 本报告主要调研目前主流的机器学习平台,包括但不限于Amazon的Sage maker,Alibaba的PAI,Baidu的PaddlePaddle。对产品的定位、功能、实践、定价四个方面进行详细解析,并通过标杆对比分析提出一套机器学习平台评价体系&#x…

案例总结之——redis缓存不一致的问题

1.是什么? Redis:Remote Dictionary Server,即远程字典服务 支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 是当前互联网世界最流行的 NoSQL(Not Only SQL)数据库…

js实现懒加载 最简单

实现前得先知道一下js里的几个高度: 视口高度:document.documentElement.clientHeight 滚动高度:document.documentElement.scrollTop || document.body.scrollTop 元素距离最顶端高度:dom元素.offsetTop 先说一下思路&#xff1…

k8s之list-watch,节点调度以及亲和性

一、list-watch机制1.1 list-watch介绍Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 Node 节点上面建立 Po…

【mmdeploy部署系列】使用Tensorrt加速部署mmpose人体姿态库

【mmdeploy部署系列】使用Tensorrt加速部署mmpose人体姿态库0.引言1.安装mmcv2.使用mmpose(1)安装mmpose(2)运行mmpose3.使用mmdeploy(1)安装ppl.cv(2)编译安装mmdeploy(…

【手把手一起学习】(八) Altium Designer 20修改和自定义原理图标题栏

1 修改原理图标题栏 直接对原理图标题栏属性进行修改,操作如图所示: 修改后,并不会显示,故该方法不可用: 正确的操作如下,先选择合适的模板: 然后,进行属性的修改: 此时…

Python3中ConfigArgParse模块的使用

ConfigArgParse是一个可以替换argparse的插件,可通过"pip install configargparse"直接安装,允许通过配置文件或环境变量设置选项.最新版本为1.5.3,源码地址为:https://github.com/bw2/ConfigArgParse, License为MIT. Python中的命令行…

分布式-分布式高可用笔记

高可用的保障方式 双十一限制退款 从业务角度考虑,由于活动期间流量巨大,订单产生数量过大,需要节省平台和商家的人力资源,节省库存盘点等工作;退款处理并不是核心流程,在双十一当天,商家也没…

vbscriptaspsql常用代码整理

1、前言 因为目前工作中一直有用到vbscript和asp和sql,所以就把一些常用的语法代码整理了一下。 2、vbscript 2.1、do while循环&if else(遍历结果集) Dim rs do while not rs.Eof rs.eof表示结果集无法获取更多的数据即(…

呼吸机方案 以 MM32F3270 为主控板,MM32SPIN05PF 为电机控制主控

呼吸机的作用是让氧气进入肺部并排出二氧化碳,帮助病患顺利呼吸。呼吸机连接一条管子到患者的嘴或鼻子,氧气量可以通过监视器加以控制。 基于灵动微控制器的呼吸机,以 MM32F3270 为主控板,MM32SPIN05PF 为电机控制主控&#xff1…