【代码随想录|二叉树递归法】

代码随想录 动态规划、回溯、递归、二叉树、贪心 代码随想录全套文档 动态规划、回溯、递归、二叉树、贪心 立即下载

二叉树递归四道题

代码随想录文章链接代码随想录 (programmercarl.com)

226.翻转二叉树

题目链接https://leetcode.cn/problems/invert-binary-tree/description/

/**
 * 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:
    TreeNode* invertTree(TreeNode* root) {
        if(root==NULL)return NULL;
        swap(root->left,root->right);//根
        invertTree(root->left);//左
        invertTree(root->right);//右
        return root;
    }
};

这里递归法所谓的前中后序,就是看把根节点的左右指针交换(根)、整个左子树交换(左)还是把整个右子树交换(右)的顺序问题,这里前序遍历和后序遍历的结果其实是一样的,中序遍历要不同一点:比如先把整个左子树交换(左),把根结点的左右指针交换后(中),这个时候交换的右子树其实就是根结点交换过去的左子树(右),所以要用中序遍历的话用(左)(中)(左)才不会错。

101.对称二叉树

题目链接https://leetcode.cn/problems/symmetric-tree/description/

1、确定递归函数的参数和返回值   

给的是根节点,所以要不断比较两个左右结点的值,返回值是bool

2、确定终止条件

要比较两个指针是否相同,可以先把不相同的情况列举出来剩下的情况自然就是相等的了

(1)左结点为空,右结点不为空  返回false
(2)左结点不为空,右结点为空  返回false
(3)左结点不为空,右结点为空  返回true
(4)左节点不为空,右结点不为空,两节点不相等(递归)

只要不满足上面结点为空的条件的说明两个节点不为空,那就继续调用compare函数,假如调用的时候发现左节点不为空右结点为空,就会返回 0(false)最后赋值给outside也为0

(5)左节点不为空,右结点不为空,两节点相等(递归)

只要不满足上面结点为空的条件的说明两个节点不为空,那就继续调用compare函数,当最后left的左节点和right的右节点指向为空的时候会返回1(true)然后逐层返回outside为1

3、确定单层递归的逻辑

单层递归的逻辑就是处理 左右节点都不为空,且数值相同的情况。所以只能用后序遍历,判断左右子树的情况后才能进行判断inside和outside。

/**
 * 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:
    bool compare(TreeNode*left,TreeNode*right){
        if(left==NULL&&right!=NULL)return 0;
        else if(left!=NULL&&right==NULL)return 0;
        else if(left==NULL&&right==NULL)return 1;
        //两个节点有值的情况:
        bool outside=compare(left->left,right->right);//左子树的左节点
        bool inside=compare(left->right,right->left);//左子树的右结点
        if(outside&&inside)return 1;//根  
        else return 0;
    }
    bool isSymmetric(TreeNode* root) {
        if(root==NULL) return 1;
        else 
        return compare(root->left,root->right);
    }
};

104.二叉树的最大深度

题目链接https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/

高度                                      深度

3                                             1

2                                             2

1                                             3

后序                                      前序

(左右中)                              (中左右)

求高度可以用后序遍历,把高度从叶子结点传到根节点

求深度可以用前序遍历,把高度从根节点传到叶子结点

这里用的是后序遍历,因为根节点的高度就等于二叉树的最大深度

1、确定递归函数的参数和返回值:

参数就是传入树的根节点,返回就返回这棵树的深度,所以返回值为int类型。

2、确定终止条件:

根节点为空的时候,就返回值为0,一直遍历到左节点为空的时候就返回值

3、确定单层递归的逻辑:

确定左结点的深度和右结点的深度,返回左右结点最大深度+1。

111.二叉树的最小深度

 题目链接https://leetcode.cn/problems/minimum-depth-of-binary-tree/description/

class Solution {
public:
    int minDepth(TreeNode* root) {
        if(root==NULL) return 0;
        int leftwidth=minDepth(root->left);
        int rightwidth=minDepth(root->right);
        if(root->left==NULL&&root->right!=NULL) return rightwidth+1;//左节点为空,右节点不为空
        else if(root->left!=NULL&&root->right==NULL) return 1+leftwidth;//左结点不为空,右结点为空
        int result= min(leftwidth,rightwidth)+1;//当左右节点都不为空的时候
        return result;
    }
};

和求最大深度差不多,但是这里当左节点为空右节点还有子节点的时候直接返回min(leftwidth,rightwidth)+1的话就会返回这里空节点的深度,但是它不是叶子结点,所以要把特殊情况单独列出来。

1、确定递归函数的参数和返回值:

参数就是传入树的根节点,返回就返回这棵树的深度,所以返回值为int类型。

2、确定终止条件:

根节点为空的时候,就返回值为0,一直遍历到左节点为空的时候就返回值。

3、确定单层递归的逻辑:

当左节点为空右节点不为空要返回右节点的值+1,当左节点不为空右节点为空要返回左节点的值+1,左右节点都不为空的时候,就返回最小值+1。

基于ADS的低噪声放大电路设计 1. 低噪声放大器设计理论基础 1.1 低噪声放大器在通信系统中的作用 低噪声放大器的主要作用是放大天线从空中接收到的微弱信号,减小噪声干扰,以供系统解调出所需的信息数据。当今,人们对于各种无线通信工具的要求越来越高,如功率辐射要小、作用距离要远、覆盖范围要广等,这就对系统的接收灵敏度提出了更高的要求,系统接收灵敏度的计算公式为: Smin⁡=−144(dBmHz)+NF+10lg⁡BW(MHz)+SN(dB) {S_{\min }} = - 144\left( {\frac{{{\rm{dBm}}}}{ 阅读详情

相关推荐

用Python+ArcGIS分析厦门共享单车数据:5分钟搞定订单时长与距离分布的可视化

本文详细介绍了如何利用Python和ArcGIS Pro 3.x快速分析厦门共享单车数据,实现订单时长与距离分布的可视化。通过数据清洗、预处理和高级可视化技巧,揭示用户行为特征,为运营优化提供数据支持。文章还提供了环境配置、代码示例和业务洞察,帮助开发者高效完成数据分析任务。

weixin_28327051的博客 336

代码随想录 | 二叉树(与递归)、回溯、贪心

​主要是因为程序运行的时候对unordered_set 频繁的insert,unordered_set需要做哈希映射(也就是把key通过hash function映射为唯一的哈希值)相对费时间,而且insert的时候其底层的符号表也要做相应的扩充,也是费时的。前序:因为前序遍历的顺序是中左右,先访问的元素是中间节点,要处理的元素也是中间节点,所以刚刚才能写出相对简洁的代码,因为要访问的元素和要处理的元素顺序是一致的,都是中间节点。效率很低,因为没有很好的模拟回溯的过程,所以迭代法有很多重复的计算。

weixin_45793258的博客 802

基于4G cat.1的低功耗车牌识别摄像头模组介绍

在消费类摄像头领域,4G低功耗相机已经非常普遍,在可视门锁,婴儿看护,户外监控等领域都获得了很好的应用.但是在工业领域,低功耗相机的应用还不是那么广泛.这里要介绍一款基于4G cat.1的低功耗车牌识别摄像头模组,在待机状态只有MCU和毫米波雷达以1Hz的频率工作,功耗低至500uA,并可以通过4G模块远程唤醒模组.

bindaz的专栏 1647

代码随想录-Day14 | 二叉树递归遍历 、二叉树迭代遍历

思路:写递归算法的三要素: 中序遍历 后续遍历 二叉树迭代遍历 利用**栈(后进先出)**实现递归逻辑思路:中节点先加入栈后就弹出, 然后加入其右孩子节点,为什么这样做?由于栈是后进先出的特性,只有先加入右孩子才能实现,从栈弹出后为前序中左右的遍历方式! 中序遍历 思路:中序遍历相对来说还是比较难理解,主要是二叉树我们都是从根节点进行访问的,而且前序遍历和后续遍历开始处理的节点也是从根节点。但是中序遍历与他们不同,中序遍历顺序: 左 中 右,访问节点和处理节点不同!代码的实现过程:从根节点开始,先把根节

weixin_45923460的博客 570

从 JDK8 到 JDK17:CRMEB 框架升级

【摘要】CRMEB开源框架已成功从JDK8升级至JDK17,带来显著性能提升:并发吞吐量提高35%,响应延迟降低40%,资源占用减少25%。升级方案解决87个技术卡点,支持模块化扩展和微服务转型,兼容SpringBoot3.0等新技术。提供基础版到企业级的升级服务,包含代码重构指导和性能调优。经金融级验证的方案可帮助电商平台实现日均10万+UV承载,支付成功率提升至99.7%。现以低于市场30%的价格提供全周期技术支持,助力企业抢占技术先机。

weixin_39782540的博客 701

QuickFix Java 讲解(五)消息的收发与查看

本系列力求手把手教你怎样利用QuickFix Java 搭建自己的 FIX 协议收发平台,以及其中的注意事项。 所有源码的地址(免费): https://github.com/zongzhec/QuickFixPractise 这节我们讨论将Acceptor和Initiator启动以后,收到的消息极其查看方式。 6. 收发双方的通信 6.1. 启动后的通信和登录 为方便起见,这里我们使用统一的源码:https://github.com/zongzhec/QuickFixPractise ..

2246

二叉树前、中、后、层次、遍历的非递归法

一、二叉树 非递归前序遍历 class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); if(root == null) return res; ...

weixin_34390996的博客 228

QT与Coin3D实现机器人的仿真

前言 Coin3D编程环境配置好后,开始下一步的机器人仿真任务。本文根据在研5轴机器人,完成三维模型生成与机器人的仿真。主要参考博主冯Jungle的博客,在此表示感谢。 ——2021.05.23 环境 Win10:VS2019、QT5.15.2、Coin3D、SolidWorks2016 机器人三维模型生成 目前广泛应用于因特网的VRML ( Virtual Reality Modeling Language,虚拟现实建模语言)为用户提供一种可参与的、并能对场景中对象主动做出反应的虚拟现实环境,现已成

焦露的博客 6907

代码随想录算法训练营Day14| LeetCode 513 找树左下角的值、112 路径总和、113 路径总和 II、106 从中序与后续遍历序列构造二叉树、105 从前序与中序遍历序列构造二叉树

代码随想录算法训练营第十四天,继续接受二叉树的洗礼!

修炼途中的所见所闻,所思所想。 1393

永恒之蓝漏洞复现(ms17-010)

Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是再后来的新版中,改成了用Ruby语言编写的了。在kali中,自带了Metasploit工具。

渗透之路,攻防之间皆学问 2万+

Ceres&OpenCV 单目相机标定(论文复现)

Ceres&OpenCV 单目相机标定(论文复现)

dayuhaitang1的博客 370

代码随想录 day14 ||144.二叉树的遍历 ,145.二叉树的后序遍历 , 94.二叉树的中序遍历

每次写递归,都按照这,可以保证大家写出正确的递归算法!: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。

qq_65208982的博客 257

flowable工作流看这一篇就够了(基础篇)

接下来我们构建一个非常简单的请假流程,Flowable引擎需要流程定义为BPMN 2.0格式,这是一个业界广泛接受的XML标准。在Flowable术语中,我们将其称为一个流程定义(process definition)。一个流程定义可以启动多个流程实例(process instance)。流程定义可以看做是重复执行流程的蓝图。在这个例子中,流程定义定义了请假的各个步骤,而一个流程实例对应某个雇员提出的一个请假申请。

qq_38196449的博客 2万+

【代码随想录|二叉树递归法02】

在写的时候直接在while循环里面写while(root->left)root->left=root->left->left,就没通过,好家伙,这么写直接把人二叉树的左节点 都改了(hhh),所以要用临时变量TreeNode* left先指向一个树的结点。在遍历的时候,每到一个节点就先加入到path数组里面,然后进行递归左子树,在遍历到根节点加入到res里面之后就会一个一个pop直到root结点,然后再进行递归右子树,在遍历到根节点加入到res里面之后也会一个一个pop直到root结点。

mazo_command的博客 915

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

代码随想录62——二叉树3——递归法——二叉树的前中后序遍历

🔥本篇概览:数据结构与算法||详细讲解了递归法——二叉树的前中后序遍历。🌈⭕🔥

做一个善良的人,做好自己的事,如果愿意,再发一份光。 744

深度学习工具包 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")

代码随想录|二叉树的递归法、迭代法、层次遍历

public void inTraversal(TreeNode root,List<Integer> list) {//中根遍历。// 后序遍历顺序 左-右-中 入栈顺序:中-左-右 出栈顺序:中-右-左, 最后翻转结果。stack.isEmpty()){//中-左-右 右左中。stack.isEmpty()){//左-右-中 中右左。stack.isEmpty()){//左中右 右中左。// 前序遍历顺序 左-中-右 入栈顺序:中-右-左。// 中序遍历顺序 左-中-右 入栈顺序:左-右。

2301_79322970的博客 960

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

代码随想录一刷Day8 二叉树(二)递归法

总是搞不明白递归法应该怎么做还有完全二叉树的做法:利用完全二叉树的性质,若此树为完全二叉树,则沿最左侧遍历和最右侧遍历的结点相同,采用后序遍历,子树节点计算完毕后返还给上一个节点。

qq_53306533的博客 835

代码随想录算法训练营第13天(树1)| 二叉树理论基础篇、二叉树的递归遍历(递归法)、 、二叉树层序遍历

题目:讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE一、二叉树的种类满二叉树、完全二叉树、二叉搜索树、平衡二叉搜索树(AVL)1、满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。

YOLO的博客 735

代码随想录C++算法训练,二叉树(day17)

此题需要我们理解题意中构建二叉树的顺序与规则是什么,随后按部就班构建要求的最大二叉树构建二叉树一般采用前序遍历,优先构建中间节点,随后再递归构建左右节点。递归要注意的三个要点:递归函数的参数和返回值:参数传入的是存放元素的数组,返回的是该数组构建成二叉树后的头节点,返回类型为指向节点的指针类型递归函数的结束条件:当我们遍历到叶子节点时,应该构建一个新节点,并把数组的数值赋予给这个节点,随后返回这个节点。表示这个数组大小为1的时候,构建了一个新的节点并返回。

2301_76803938的博客 1109

代码随想录day12 | [前、中、后、层]二叉树的遍历迭代法和递归法

二叉树的遍历

想要上进的coder的博客 357

代码随想录第十一天|二叉树的递归法

递归翻转左子树和右子树,根据递归三部曲(1)参数和返回值传入的是节点,不需要返回值(2)终止条件如果遇到根节点就终止(3)单层递归逻辑左节点和右节点交换。

m0_68269895的博客 260

代码随想录一刷之递归法解决二叉树

代码随想录之二叉树的遍历

m0_53573085的博客 166

代码随想录算法训练营Day13 | 二叉树的遍历(递归法与迭代法)

今天的内容是关于二叉树遍历的各种方法的实现,需要对比记忆。日积月累,加油。

m0_74853141的博客 1666

代码随想录训练营第十七天 || 1.从中序与后序遍历序列构造二叉树 2. 最大二叉树 3.合并二叉树 4. 二叉搜索树中的搜索 5. 验证二叉搜索树

递归索引:想要构造一个最大二叉树,就是不断找到数组中的最大值,分割数组,再在分割后的数组中找最大值,继续分割,每次分割出的最大值就是二叉树及其子树的根节点。递归法:通过中序遍历,可以正好利用二叉搜索树的性质,因为是从二叉搜索树的最左下角,所以是最小的结点,不断遍历结点的值应该不断增大,所以判断是否遍历的过程是否递增即可。1.对于二叉搜索树的概念理解错误:二叉搜索树是父节点永远大于左子树,永远小于右子树。1.对于二叉搜索树的概念理解错误:二叉搜索树是父节点永远大于左子树,永远小于右子树。

dkingf的博客 1170

代码随想录第十一天:二叉树,递归法遍历,迭代法遍历,层序遍历

代码随想录第十一天:二叉树,递归法遍历,迭代法遍历,层序遍历

qq_39962113的博客 1185

代码随想录训练营第十四天 |递归法解决二叉树的遍历

代码随想录训练营第十四天 |递归法解决二叉树的遍历

weixin_44489598的博客 1647
上一篇: 【代码随想录|二叉树的层序遍历】
下一篇: 【代码随想录|二叉树递归法02】
mazo_command
博客等级 码龄2年 275粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值