代码随想录Day15 | 层序遍历,翻转二叉树,对称二叉树

CST微波工作室端口设置保姆级教程:从波导端口到离散端口,手把手教你搞定S参数仿真 本文提供CST微波工作室端口设置的详细教程,涵盖波导端口和离散端口的选择与配置,助力工程师精准完成S参数仿真。通过微带线滤波器案例,详解端口尺寸、阻抗设置及常见问题排查,提升仿真效率与准确性。 阅读详情

代码随想录Day15 | 层序遍历,翻转二叉树,对称二叉树

层序遍历

文档讲解:代码随想录
视频讲解:
状态

层序遍历的原理就是利用队列来模拟节点的入和出的问题。从头节点入开始,之后每当一个节点出队列,那么就从队尾加入其左子结点和右子节点。

/**
 * 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:
    vector<vector<int>> levelOrder(TreeNode* root) {
        queue<TreeNode*> treeque;
        //压入头节点
        if(root != nullptr) treeque.push(root);
        //返回数组
        vector<vector<int>> res;
        while(!treeque.empty())
        {
            //记录当前层的节点树
            int temp = treeque.size();
            //存储当前层的节点数组
            vector<int> vec;
            for(int i =0;i<temp;i++)
            {
                TreeNode* cur = treeque.front();
                vec.push_back(cur->val);
                treeque.pop();
                //压入当前节点的左节点和右节点
                if(cur->left) treeque.push(cur->left);
                if(cur->right) treeque.push(cur->right);
            }
            //将当前层的结果压入到返回数组中
            res.push_back(vec);
        }
        return res;
    }
};
  1. 递归法
  • 递归参数和返回值:当前节点,返回结果的数组以及当前的层数
  • 终止条件:当前节点为空节点时,结束
  • 递归逻辑:
//初始化,如果当前数组大小和层数相等,则先加入一个数组,该数组用来存放当前层的节点
if(res.size() == loc) res.push_back(vector<int>());
//在数组中的当前层加入当前节点
res[loc].push_back(cur->val);
//递归处理左子节点和右子节点
function1(cur->left,res,loc+1);
function1(cur->right,res,loc+1);

具体函数

void ResTree(TreeNode* cur,vector<vector<int>>& res,int dep)
    {
        //递归终止条件
        if(cur == nullptr) return ;
        //初始化当前层的存储数组
        if(res.size()==dep) res.push_back(vector<int>());
        //存入当前值
        res[dep].push_back(cur->val);
        //递归为其左节点和右节点
        ResTree(cur->left,res,dep+1);
        ResTree(cur->right,res,dep+1);
    }
vector<vector<int>> levelOrder(TreeNode* root) {
        int dep = 0;
        vector<vector<int>> res;
        ResTree(root,res,dep);
        return res;
    }

翻转二叉树

文档讲解:代码随想录
视频讲解:
状态:层序遍历

当队列头元素存在左节点或者右节点是,交换。然后再压入。当然也可以先压入再交换。交换相当于是对中节点的操作。

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        queue<TreeNode*> treeque;
        if(root) treeque.push(root);

        while(!treeque.empty())
        {
            int tempsize = treeque.size();
            
            for(int i=0;i<tempsize;i++)
            {
                TreeNode* cur = treeque.front();
                treeque.pop();
                if(cur->left||cur->right)
                {
                    swap(cur->left,cur->right);
                }

                if(cur->left) treeque.push(cur->left);
                if(cur->right) treeque.push(cur->right);
            }
        }
        return root;
    }
};
  1. 递归
  • 函数参数,树的根节点
  • 终止条件:翻转节点为空
  • 单层逻辑:翻转该节点的左和右,然后调用该函数继续对其现在的左节点和右节点进行翻转。
swap(...);
func1(left);
func1(right);

具体程序

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        if(root==nullptr) return root;
        invertTree(root->left); //左
        invertTree(root->right); //右  -- 上两步可以看作是遍历获取
        swap(root->left,root->right); //中
        return root;
    }
};

交换要么在两节点递归之前,要么在两节点递归之后。否则可能会出现一方没有交换的情况。交换的操作不应该在遍历操作之间,两者是分开进行的。
3. 迭代

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        stack<TreeNode*> treestk;
        if(root) treestk.push(root);

        while(!treestk.empty())
        {
            //记录中节点
            TreeNode* cur = treestk.top();
            //弹出中节点
            treestk.pop();

            //遍历
            //压入右节点
            if(cur->right) treestk.push(cur->right);
            //压入左节点
            if(cur->left) treestk.push(cur->left);

            //交换操作
            swap(cur->left,cur->right);
        }
        return root;
    }
};

对称二叉树

文档讲解:代码随想录
视频讲解:
状态:×

比较的其实是两棵子树是否是翻转的,
对于左子树可以采用中左右的方式存入到队列中
对于右子树可以采用中右左的方式存入到队列中。
如果队列的每个元素相等,说明true。

如果采用递归法,应当使用后序遍历,即从子结点开始判断是否相等。我们需要确定

  1. 参数和返回值:参数就是左子树和右子树对应的节点,返回值就是true或者false
  2. 终止条件:就是返回bool的情况
//对应左节点和右节点为空 true
if (left == nullptr && right == nullptr) return true;
//对应左节点和右节点有一个不为空 false
else if (left != nullptr && right == nullptr) return false;
else if (left == nullptr && right != nullptr) return false;
//对应左节点和右节点都不为空,但值不等 false
else if (left->val != right->val) return false;
  1. 单层逻辑
    就是处理当前对应节点相同的情况,当前节点就是中节点,中节点的值相同了,还需要考虑以其为父节点的子树对应值是否相同(递归的调用),最后结合在一起才是最终的中节点。
bool out = compare(left->left,right->right);
bool inside = compare(left->right,right->left);
bool mid = true && out && inside; //true代表中节点为true
return mid;

迭代法:注意加入元素的顺序,因为每次比较是取容器前两个元素比较,所以加入的顺序应当是相互对应的,比如

  • 加入左子树左节点,那么下一个就加入右子树右节点,然后才是左子树右节点,右子树左节点
【数字孪生与仿真技术】05:从原理到实战:MATLAB/Simulink在航空航天GNC系统开发中的深度解析(含全流程代码与认证指南) 摘要:本文系统阐述MATLAB/Simulink在航空航天制导、导航与控制(GNC)系统开发中的核心应用。通过解析GNC系统高保真动力学建模、多源导航传感器融合、鲁棒控制算法设计等关键技术原理,结合Virgin Orbit运载火箭、CubeSat等真实案例,展示从需求分析、模型搭建、仿真验证到代码生成与认证的完整开发流程。文中提供1200余行关键代码、8个可复用Simulink模型及详细执行结果展示,涵盖DO-178C认证支持、实时性能优化等工业级开发规范,为航空航天工程师、科研人员提供可落地的参考方案。 阅读详情

相关推荐

卡门涡街可视化实战:从网格加密策略到动画后处理技巧

本文详细介绍了利用ANSYS Fluent进行卡门涡街可视化模拟的全流程,包括网格加密策略、求解器设置、涡街捕捉及动画后处理技巧。通过计算流体力学(CFD)方法,帮助工程师和研究人员高效模拟圆柱绕流现象,优化工程设计。

weixin_29309785的博客 414

代码随想录15——二叉树:层序遍历、226翻转二叉树、101对称二叉树

因为我们要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。注意上面最后一种情况,我没有使用else,而是elseif, 因为我们把以上情况都排除之后,剩下的就是 左右节点都不为空,且数值相同的情况。返回值的话其实也不需要,但是题目中给出的要返回root节点的指针,可以直接使用题目定义好的函数,所以就函数的返回类型为TreeNode*。此时才进入单层递归的逻辑,单层递归的逻辑就是处理 左右节点都不为空,且数值相同的情况。

qq_42731705的博客 785

噪声整形与过采样实战:从N-bit ADC到DSM的SQNR优化指南

本文深入探讨了噪声整形与过采样技术在DSM(Delta-Sigma调制器)中的应用,重点分析了量化器位数(N)、滤波器阶数(L)和过采样率(OSR)对SQNR优化的影响。通过实战案例和参数协同优化策略,帮助工程师在音频处理和通信系统设计中实现更优的信号质量。

weixin_42561040的博客 339

《代码随想录第十三天》——二叉树理论基础、递归遍历、迭代遍历、统一迭代、层序遍历

int val;TreeNode(int x) : val(x), left(NULL), right(NULL) {}//记得设个构造函数。

qq_43797172的博客 852

【深度学习】肺结节分割项目实战一:处理数据集

一、LIDC-IDRI数据集简介 官方网站 肺图像数据库协会的图像收集(LIDC-IDRI)包括诊断和带有病变注释标记的肺癌筛查胸部CT。这是一个网络公开的国际资源,用于肺癌检测和诊断的计算机辅助诊断(CAD)方法的开发、培训和评估。 数据集包含1018个病例,每个病例包括来自临床胸部CT扫描的图像和一个相关的XML文件,该文件记录了由四名经验丰富的胸部放射科医生进行的两阶段图像注释过程的结果。在最初的盲读阶段,每个放射科医生独立审查每个CT扫描,并标记出属于三种类型之一的病变(“结节>= 3mm”,

weixin_42182906的博客 1万+

Hi3516CV610开发板ISP调优实战——从在线调试到参数固化部署全流程

本文详细介绍了Hi3516CV610开发板ISP参数从在线调试到固化部署的全流程。针对调试参数重启丢失的痛点,重点解析了如何从PQTools安全导出参数、进行格式转换与适配,并通过烧录工具或系统更新两种路径将参数永久固化至Flash。最后提供了双重验证与常见问题排查方法,确保调优效果在产品中稳定生效。

weixin_29169505的博客 425

day15 ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2

(即逐层地,从左到右访问所有节点)。

bulengg的博客 463

逆向工程视角:MFI芯片通信协议在Linux环境下的行为分析

本文从逆向工程角度深入分析了MFI芯片在Linux环境下的通信协议行为,重点探讨了树莓派与MFI芯片通过I2C接口交互的技术细节。文章详细介绍了信号捕获、协议栈逆向、动态调试技巧以及安全机制分析,为开发者提供了在Linux驱动层面实现MFI认证的实用方法。

time3的博客 176

【代码随想录|二叉树的层序遍历】

最开始depth的值一直不对,因为这里把只要是左节点右节点是空的就计数,那就会把根节点一并记上,正确的思路应该是遍历每一层之前把depth++,如果遇到空节点就直接返回。我滴妈,这个调用用.还是->简直就是运气试出来的(离谱),这里队列里面存的是指针地址,但是队列是当对象来调用的。这里的Node放的是队列里的第一个元素,就是指针了,而且这里的que里面要存储的是指针如果node->children->val那就是往里推的是值了。,那左右结点的如果还有子节点就不会继续遍历,当然就不能通过了。

mazo_command的博客 683

利用Langchain生成合成数据的实践指南

合成数据是相对于从真实世界事件中收集的数据而言的人工生成的数据。它用于模拟真实数据,同时避免隐私泄露或遇到真实数据中的局限性。:尽管合成数据有诸多优点,但应谨慎使用,因为它可能无法捕捉真实世界的复杂性。

eahba的博客 397

ChatGPT Web转API工具:原理、部署与集成实战

在AI应用开发中,API(应用程序编程接口)是实现系统间通信和数据交换的核心技术,它通过标准化的请求响应机制,将复杂功能封装为可编程的服务。其工作原理基于HTTP协议,通过定义清晰的端点、方法和数据格式,使不同平台的应用能够高效集成AI能力。这一技术价值在于极大降低了开发门槛,促进了自动化流程和智能功能的快速落地,广泛应用于智能客服、内容生成和创意辅助等场景。本文聚焦于如何通过浏览器自动化技术,将ChatGPT的Web界面能力转化为标准API服务,其中涉及Playwright无头浏览器操作和会话Cookie

weixin_42533910的博客 1761

代码随想录二叉树——二叉树的层序遍历

刷题总结

qq_39473176的博客 461

C# 工业视觉性能极致优化:多线程推理池 + 对象复用 + 批量检测,速度提升 10 倍实战

set;} // 输入图像set;} // 异步返回结果set;} // 用于监控延迟性能优化不是魔法,而是对资源生命周期的精细管理和对硬件特性的充分利用。多线程池解决了 CPU/GPU 闲置问题。对象池解决了 GC 停顿问题。零拷贝解决了总线带宽瓶颈。严格的 Dispose解决了内存泄漏问题。这套架构已在多个高速锂电、3C 电子检测产线落地,轻松应对 200ms 甚至 50ms 的严苛节拍。记住,在工业领域,稳定性与速度同等重要。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 303

代码随想录刷题Day15 | 102.二叉树的层序遍历 | 226.翻转二叉树 | 101.对称二叉树

代码随想录刷题Day15 | 102.二叉树的层序遍历 | 226.翻转二叉树 | 101.对称二叉树

DUM1615的博客 278

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

代码随想录算法训练营Day15|层序遍历,翻转二叉树,对称二叉树

翻转二叉树也可以使用迭代法,但要注意,这里迭代法不是前中后序的迭代写法,因为本题的本质是判断两个树是否是相互翻转的,其实已经不是所谓二叉树遍历的前中后序的关系了。判断对称二叉树要比较的是哪两个节点,要比较的不是左右节点,而是两个树,这个树是根节点的左右子树,所以在递归遍历的过程中,也要同时遍历两棵树。因为我们要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。节点为空的情况有:(注意!比较的是左右节点,是节点,不是左右孩子)

WEnyue4261的博客 1241

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

代码随想录day15 层序遍历 翻转二叉树 对称二叉树

代码同第一题,只是最后一行return res[::-1]代码同第一题,只是最后一行return [r[-1] for r in res]代码同第一题,只是最后一行return [sum(r) / len(r) for r in res]代码同第一题,只是最后一行return [max(r) for r in res]注意返回的是root,即修改了各节点next之后的新树的根节点。

lstarr的博客 448

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【Day15】代码随想录之二叉树part2——层序遍历、翻转二叉树、对称二叉树

今天是刷二叉树的part2,前面的二叉树的深度优先搜索的迭代算法比较麻烦,广度优先搜索的层序遍历较为简单,开冲!!!

格子格鸽的个人博客 952

代码随想录刷题day15|二叉树的层序遍历&翻转二叉树&对称二叉树

比较顺利的一天,对称二叉树要好好想一下思路。

东东唯一指定铲屎官 1255

代码随想录Day15二叉树的层序遍历10、226.翻转二叉树、101.对称二叉树 2

二叉树的层序遍历10 102.二叉树的层序遍历 107.二叉树的层次遍历II 199.二叉树的右视图 637.二叉树的层平均值 429.N叉树的层序遍历 515.在每个树行中找最大值 116.填充每个节点的下一个右侧节点指针 117.填充每个节点的下一个右侧节点指针II 104.二叉树的最大深度 111.二叉树的最小深度 226.翻转二叉树 101.对称二叉树 2

weixin_46620779的博客 2414

代码随想录day15|二叉树的层序遍历、翻转二叉树、对称二叉树

我们要实现层序遍历,就需要一个队列来不断存放我们每层的元素,我们记录二叉树每层的元素个数,然后不断从队列中取出相同个数的元素,存放在结果数组中,这样我们就完成了我们层序遍历。

qq_56966973的博客 974

代码随想录27期|Python|Day15|二叉树|层序遍历|对称二叉树|翻转二叉树

本文图片来源:代码随想录。

m0_57527624的博客 2062

代码随想录算法训练营day15|层序遍历 、226.翻转二叉树 、101. 对称二叉树

层序遍历 (一共十道题)层序遍历 (一共十道题)层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。需要借用一个辅助数据结构即队列来实现,226.翻转二叉树 (优先掌握递归)参数就是要传入节点的指针,不需要其他参数了,通常此时定下来主要参数,如果在写递归的逻辑中发现还需要其他参数的时候,随时补充。当前节点为空的时候,就返回因为是先前序遍历,所以先进行交换左右孩子节点,然后反转左子树,反转右子树。完整代码101. 对称二叉树 (优先掌握递归)

weixin_64883584的博客 970

代码随想录训练营day15, 二叉树的层序遍历, 翻转二叉树, 对称二叉树

太好玩啦

Southside3amurai的博客 504

代码随想录Day15——层序遍历 226.翻转二叉树 101. 对称二叉树

使用队列,将每一层的元素入队,并记录每层元素个数,再该层每一个元素从队头出队时将其子节点从队尾入队,这样当上层元素全部出队后,其下层元素全部入队,重复上述操作,直到队列为空。下边11道题均可以使用该方法解决。给你二叉树的根节点root,返回其节点值的。(即逐层地,从左到右访问所有节点)。给你二叉树的根节点root,返回其节点值。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)给定一个二叉树的root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

cheng_dog的博客 1073

【代码随想录37期】Day15 层序遍历、翻转二叉树、对称二叉树

代码随想录102. 二叉树的层序遍历 - 力扣(LeetCode) 107. 二叉树的层序遍历 II - 力扣(LeetCode) 199. 二叉树的右视图 - 力扣(LeetCode) 637. 二叉树的层平均值 - 力扣(LeetCode) 429. N 叉树的层序遍历 - 力扣(LeetCode) 515. 在每个树行中找最大值 - 力扣(LeetCode) 116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode) 104. 二叉树的最大深度 - 力扣(LeetCode) 力扣(Lee

Law of Conservation of Eudaemonia 444

代码随想录刷题day15 层序遍历;226.翻转二叉树;101. 对称二叉树

代码随想录刷题day15

weixin_43127049的博客 205
上一篇: 代码随想录Day14 | 二叉树、递归遍历、迭代遍历、统一迭代
下一篇: 代码随想录Day16 | 104二叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数
sRiddle
博客等级 码龄7年 528粉丝 63原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值