代码随想录二刷Day 15

2023-09-22 12:02:40

102. Binary Tree Level Order Traversal

vector<int>() it is basically constructor of std::vector class and will create a new empty vector.

You can also mention the size of required vector in brackets.

访问二维vector的元素: 如果指定外层和内层向量的大小,就可用operator[]进行读和写;如果只指定外层向量大小,就能用push_back()函数进行写,不能用operator[]进行读和写

下面这行不理解主要是因为不了解vector怎么使用,vector是可以自动变长度的数组当存心的元素进来的时候,但是没存进来的时候空的vector还是空的vector不能直接[]取后面的数,这时候就会越界,二维vector的水平方向可以一直加元素,竖直方向也可以一直加元素,但是加元素之前不能用operator取

if (result.size() == depth) result.push_back(vector<int>()); 
/**
 * Definition for a binary tree node.
 * 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) {}
 * };
 */
class Solution {
public:
    void tranversal(TreeNode* current, vector<vector<int>> &result, int depth) {
        if(current == NULL) return;
        if (result.size() == depth) result.push_back(vector<int>()); //这句话的意思是插入一行空的vector
        result[depth].push_back(current->val);
        tranversal(current-> left, result, depth+1);
        tranversal(current-> right, result, depth+1);
    }

    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> result; //这一句没堆result定义是几行几列,在上面用result[depth]的时候无法直接用,因为depth一直在加一
        int depth = 0;
        tranversal(root, result, depth);
        return result;
    }
};

226. Invert Binary Tree

注意这里交换的是指针不是数值,指针的意思就是交换的时候下面的左右孩子跟着一起过去

The swap() function in C++, from the standard library, is a function that directly swaps values between two given variables of the same types. Let us look at the syntax for using the same: root->left 与root->right都是地址,所以我们这里swap()交换的也是地址

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        if(root == NULL) return root;
        //swap(root->left->val, root->right->val);交换指针,就是节点之后的所有孩子都跟着一起交换
        swap(root->left, root->right);
        invertTree(root->left);
        invertTree(root->right);
        return root;
    }
};

101. 对称二叉树

看答案好理解,但是写不出来,需要分几类讨论各种情况

更多推荐

Redis学习笔记--001

Redis快速入门文章目录Redis快速入门一、初识Redis1.1、NoSQL数据库1.2、Redis介绍1.3、[Redis](https://redis.io/)的安装二、Redis常见命令2.1、Redis默认启动2.2、指定配置启动2.3、Redis开机自启设置三、Redis客户端3.1、Redis命令行客户

嵌入式Linux学习(1)——通信总线协议简介

目录一.UART1.1单工/双工通信​编辑1.2UART帧格式1.2.1Q/A1.3UART硬件结构二.基于UART的协议2.1RS2322.1.1RS232协议存在的问题2.2RS485​编辑2.2.1差分信号2.2.2RS485优势三.IIC3.1通信过程3.2IIC总线寻址3.3IIC总线信号3.3.1起始与停止

分布式架构和微服务架构的区别

1、含义不同微服务架构是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中。分布式系统是若干独立计算机的集合,这些计算机对用户来说就像单个相关系统。2、概念不同微服务架构是设计层面的东西,一般考虑如何将系统从逻辑上进行拆分,也就是垂直拆分。分布式架构是部署层面的东西,即强调物理层面的组成,即系统

操作系统备考学习 day5(2.2.5 - 2.3.1)

操作系统备考学习day5第二章进程与线程2.2处理机调度2.2.5调度算法先来先服务(FCFS)短作业优先(SJF)高响应比优先(HRRN)时间片轮转(RR)优先级调度算法多级反馈队列调度算法多级队列调度算法2.3同步与互斥2.3.1同步与互斥的基本概念第二章进程与线程2.2处理机调度2.2.5调度算法先来先服务(FC

网络安全日报 2023年09月21日

1、研究人员披露基于ERMAC木马的Hook家族银行木马https://research.nccgroup.com/2023/09/11/from-ermac-to-hook-investigating-the-technical-differences-between-two-android-malware-vari

卷积神经网络实现咖啡豆分类 - P7

🍨本文为🔗365天深度学习训练营中的学习记录博客🍖原作者:K同学啊|接辅导、项目定制🚀文章来源:K同学的学习圈子目录环境步骤环境设置包引用全局设备对象数据准备查看图像的信息制作数据集模型设计手动搭建的vgg16网络精简后的咖啡豆识别网络模型训练编写训练函数编写测试函数开始训练展示训练过程模型效果展示总结与心得体

四、二叉树-上(Binary tree)

文章目录一、算法核心思想二、算法模型(一)回溯1.[104.二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/)(1)思路(2)代码(3)复杂度分析2.[144.二叉树的前序遍历](https://leetcode.cn/proble

基础组件(线程池、内存池、异步请求池、Mysql连接池)

文章目录1、概述2、线程池2、异步请求池3、内存池1、概述池化技术,减少了资源创建次数,提高了程序响应性能,特别是在高并发场景下,当程序7*24小时运行,创建资源可能会出现耗时较长和失败等问题,池化技术,主要是程序初始化之前创建多个可用连接,集中管理起来,后续直接使用,使用完并归还。2、线程池线程池主要解决问题:1、解

碳当量及相关指数

声明本文是学习GB-T713.1-2023承压设备用钢板和钢带第1部分:一般要求.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件规定了承压设备用钢板和钢带的牌号表示方法、订货内容、尺寸、外形、重量、技术要求、检验规则、试验方法、包装、标志及质量证明书。本文件适用于锅炉、压力容器、压力管

ardupilot开发 --- 避障篇

避障的类型空中防碰撞ADSB,主要是防止与其他飞行器的碰撞;避障,防止与天花板地板障碍物的碰撞;实现避障必要的传感器ADSBreceiversRangefindersorProximitySensorsorRealsenseDepthCameraADSBhttps://ardupilot.org/copter/docs

基于微信小程序的语言课学习系统的设计与实现(源码+lw+部署文档+讲解等)

前言💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗👇🏻精彩专栏推荐订阅👇🏻2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选

热文推荐