二叉树的四种非递归遍历方式(前序、中序、后序、层次遍历)C++实现

二叉树遍历(前序、中序、后序、层次) 四种遍历的基本思想: 前序遍历:根节点 --> 左子树 --> 右子树 中序遍历:左子树 --> 根节点 --> 右子树 后序遍历:左子树 --> 右子树 --> 根节点 层次遍历:由上到下,由左到右依次遍历 例子: 前序遍历:1 2 4 5 3 6 7 中序遍历:4 2 5 1 6 3 7 后序遍历:4 5 2 6 7 3 ... 阅读详情

【前序遍历】

void preOrderTraveralWithStack(TreeNode *root){	
	//NLR 根左右的顺序访问节点
        stack<TreeNode*> s;
        TreeNode *treeNode = root;
        while(treeNode!=NULL || !s.empty()){
            //迭代访问节点的左孩子,并入栈
            while(treeNode != NULL){
                s.push(treeNode);
                cout<<treeNode->val<<endl;
                treeNode = treeNode->left;
            }
            //若没有左孩子,则弹出栈顶节点,访问节点右孩子
            if(!s.empty()){
                treeNode = s.top();
                s.pop();
                treeNode = treeNode->right;
            }
        }
    }

【中序遍历的非递归方法】

void inOrderTraveralWithStack(TreeNode* root) {
     //RNL 右根左 中序遍历
     stack<TreeNode*> s;
     TreeNode* treeNode = root;
     while(treeNode!=NULL || !s.empty()){
         while(treeNode != NULL){
             s.push(treeNode);
             treeNode = treeNode->left;
         }
         if(!s.empty()){
             treeNode = s.top();
             s.pop();
             cout<<treeNode->val<<endl;//访问节点
             treeNode = treeNode->right;
         }
     }
 }

【逆中序遍历的非递归方法】

class Solution {
public:
   int cnt=0;
    int inOrderTraveralWithStack(TreeNode* root) {
        //RNL 右根左 中序遍历
        stack<TreeNode*> s;
        TreeNode* treeNode = root;
        while(treeNode!=NULL || !s.empty()){
            while(treeNode != NULL){
                s.push(treeNode);
                treeNode = treeNode->right;
            }
            if(!s.empty()){
                treeNode = s.top();
                s.pop();
                cout<<treeNode->val<<endl;//访问节点
                treeNode = treeNode->left;
            }
        }
        return 0;
    }
};

【后序遍历】

void postOrderTraveralWithStack(TreeNode* root){
    stack<TreeNode*> s;
    TreeNode *treeNode = root;
    TreeNode *lastVisit = NULL;   //标记每次遍历最后一次访问的节点
    while(treeNode || !s.empty()){//节点不为空,结点入栈,并且指向下一个左孩子
        while(treeNode){
            s.push(treeNode);
            treeNode = treeNode->left;
        }
        if(!s.empty()){
            treeNode = s.pop();
            if(treeNode->right == NULL || treeNode->right == lastVisit) {
                cout<<treeNode->val<<endl;
                lastVisit = treeNode;
                treeNode  = NULL;
            }else{
                s.push(treeNode);
                treeNode = treeNode->right;
            }
        }
    }
}

【后序遍历的非递归写法二】

void postOrderTraveralWithStack(TreeNode* root){
	stack<TreeNode*> s;
	TreeNode *treeNode = root;
	TreeNode *lastVisit = NULL; 
	while(treeNode||!s.empty()){
		while(treeNode){
			s.push(treeNode);
			p=p->left;
		}
		if(!s.empty()){
			treeNode=s.top();
			if(treeNode->right&&treeNode!=lastVisit){//若右边子
			//树存在,且从未被访问过
				treeNode=treeNode->right;//转向右子树
				s.push(treeNode);//将右子树根节点压入栈
				treeNode=treeNode->left;
			}else{
				s.pop();
				cout<<treeNode->val<<endl;
				lastVisit=treeNode;
				treeNode=NULL;
			}
		}
	}
}

【层次遍历】

void levelOrderWithQueue(TreeNode *root){
	Queue<TreeNode*> q;
	q.push(root);
	TreeNode* treeNode;
	while(!q.empty()){
		treeNode=q.front();
		q.pop();
		cout<<treeNode->val<<endl;
		if(treeNode->left)
			s.push(treeNode->left);
		if(treeNode->right)
			s.push(treeNode->right);
	}
}
C++实现递归,非递归遍历二叉树(前序,中序,后序) 初学二叉树那会儿,始终掌握不好二叉树的遍历方法,更认为非递归遍历晦涩难懂没有掌握的意义。实际上非递归的遍历方法很有用处,由于每次递归都需要将函数的信息入栈,当递归层数太深很容易就导致栈溢出,所以这个时候就必须用到非递归遍历二叉树了。而且,当看懂非递归遍历后,你会发现,其实非递归也很简单。 我们知道,要想处理二叉树,离不开其遍历方式。遍历二叉树有三种方式,前序遍历,中序遍历,后序遍历,每种... 阅读详情

相关推荐

C/C++ 二叉树的非递归遍历(前序、中序、后序非递归遍历)

二叉树的非递归遍历C/C++实现: 非递归先序遍历代码: void PreOrderTraversal (struct tree* root) { //非递归先序遍历 struct tree* temp = root; while (temp != NULL || S.top > 0) { while (temp != NULL) { ...

SanpTap的博客 2597

二叉树非递归遍历(先序、中序、后序)(C++)

二叉树非递归遍历(先序、中序、后序)(C++)1、先序遍历非递归2、中序遍历非递归2.1、搜索某节点的最左侧节点2.2、中序遍历非递归代码3、后序遍历非递归3.1、修改后的节点结构3.2、搜索某节点的最左侧节点3.3、后序遍历非递归代码 1、先序遍历非递归 //先序遍历非递归算法 template<class ElemType> void NonRecurPreOrder(const BinaryTree<ElemType>& bt, void(*visit)(const E

GTC的博客 1903

C++实现二叉树的创建以及四种遍历方式(递归与非递归)

C++实现二叉树的创建以及四种遍历方式(递归与非递归) 语言这个东西不用真的会忘, 我记得前前后后C++的基本语法我也看了好几遍了,一直没有动手写过什么东西,所以一遍遍的看,一遍遍的忘… … 正好最近在看数据结构,想着自己用C++来实现一下,一方面是熟悉整个逻辑过程,加深对数据结构的理解,另一方面,也熟悉一下C++。 下图是我们要创建的二叉树,其中的#代表空字符; 为了验证我们程序的正确性,现给出此二叉树的四种遍历结果: 前序遍历(Preorder traversal): A B C D E F

weixin_42133358的博客 5934

C++实现二叉树的前序、中序、后序、层次遍历(递归&非递归版)

C++实现二叉树遍历(前序遍历、中序遍历、后续遍历、层次遍历),代码简洁易懂,注释详细。

qq_53527856的博客 2452

二叉树遍历详解:前序、中序、后序与层次遍历实现

二叉树是数据结构中的一个基础概念,它是由有限个节点组成的集合,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树在逻辑上呈现一种层次感,从根节点开始,每个节点分支最多为两个。前序遍历是一种用于访问二叉树节点的算法,其特点是从根节点开始,按照先左子树再右子树的顺序访问每一个节点。在这个过程中,每个节点都会在它所属子树的所有节点之前被访问。由于这种遍历方式首先访问的是根节点,因此被称为“前序”遍历。

weixin_30923011的博客 945

先序中序后序遍历非递归标准算法

数据结构中关于二叉树的遍历,非递归算法数上未给出

“非递归” 实现二叉树的“前序、中序、后序、层序”遍历

相信学过或是了解过二叉树的朋友都知道,他的前序、中序、后序遍历使用递归法实现非常简单,那么如果使用非递归的方式来解,也就是使用迭代来解,你还能将他拿下么?实际上一点都不难,往下看~

CYK_byte的博客 3237

二叉树先序、中序、后序遍历非递归算法

二叉树先序、中序、后序遍历非递归算法,简述了二叉树的基本算法。

非递归前序遍历,中序遍历以及后序遍历

对于二叉树的前序遍历,中序遍历以及后序遍历的非递归解法,通常会引入一个栈用来存储二叉树中的节点。

qq_56713382的博客 1710

Mendix 开发实践指南|Mendix平台概览

低代码开发是一种将编码从文本形式转变为视觉形式的应用开发方法。它提供了一个模型驱动的、拖放式的界面,而不是传统的编码环境,使得各种技能水平的开发者——包括专业开发人员、新手、主题专家、业务利益相关者和决策者——都能使用低代码工具来构建驱动价值的企业业务应用。低代码的核心在于提高开发的可访问性和效率,让更多人能够参与到应用开发中来​​。Mendix适用于多种应用场景,包括企业级应用、移动应用、物联网(IoT)应用和微服务架构等。

多年搬砖的经验分享... 4413

【智能体】零代码实战:Coze多智能体协作开发全流程解析

本文详细解析了Coze平台的多智能体协作开发全流程,从入门指南到实战技巧,帮助用户零代码构建高效AI团队。通过模块化设计和专业分工,多智能体系统能显著提升任务处理速度和准确率,适用于客服、内容创作、教育培训等多个场景。文章还提供了性能优化和常见问题解决方案,助力开发者快速掌握Multi-Agent技术。

weixin_29239279的博客 336

二叉树非递归先序、中序、后序遍历过程详解及C++详细实现

数据结构,二叉树非递归先序、中序、后序遍历过程详解及C++详细实现

weixin_45651616的博客 3057

无人机频谱侦测与智能识别技术实战解析

本文深入解析无人机频谱侦测与智能识别技术实战应用,涵盖无线电侦测、信号处理和定位技术等核心内容。通过频谱分析、特征提取和机器学习算法优化,实现高精度无人机识别与定位,并分享复杂环境下的应对策略和系统集成经验。

weixin_28419039的博客 490

二叉树层序遍历递归与非递归_秋招之路-二叉树四种遍历(递归和非递归代码实现)...

前言今天和大家带来的是二叉树的常见面试题,前序,中序,后序,层次遍历,递归和非递归,这里用 C++ 代码实现。二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。前序遍历若树为空,则空操作返回。否则,先访问根节点,然后前序遍历左子树,再前序遍历右子树。(根->左->右)。中序遍历若树...

weixin_39747383的博客 117

PTC-6-2004汽轮机性能计算源代码,pycharm-包括试验计算、一类修正、二类修正-以CC350-16.7/0.98/0.5/538/538型汽轮机为例,5万7千字,过程不易欢迎打赏

汽轮机性能计算完整源代码-简化试验-包括试验计算一类修正计算和二类修正计算目录图 1 工程结构。

weixin_43441028的博客 1001

一文吃透 SAP HANA SDA:把分散数据当作本地数据来用的那把钥匙

摘要:SAP HANA SDA(Smart Data Access)技术详解:150字精要 SAP HANA SDA是一种数据虚拟化技术,允许在不复制数据的情况下访问远端数据源。核心功能包括: 通过Remote Source定义连接配置 创建Virtual Table作为本地代理 支持谓词下推优化查询性能 与SDI技术协同工作扩展数据集成能力 典型应用场景包括: 跨系统联邦查询 冷热数据分层管理 混合云数据整合 远程表复制(RTR)实现近实时数据同步 实施要点: 需关注适配器能力差异 合理运用查询下推优化

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 329

C语言实现二叉树遍历的递归和非递归算法

本文主要介绍二叉树的各种遍历方法。 二叉树的遍历 所谓二叉树的遍历,是指按某条搜索路径访问树中的每个结点,使得每个结点均被访问一次,而且仅被访问一次。 由二叉树的递归定义可知,遍历一棵二叉树便要决定对根结点NNN、**左子树LLL和右子树RRR**的访问顺序。按照先遍历左子树再遍历右子树的原则,常见的遍历次序有: 前序遍历:(N L R) 中序遍历:(L N R) 后序遍历:(L R L) 这...

From Zero to Hero 2万+

10.28华为OD机试真题 新系统 - 社交网络消息转发 (Java/Py/C/C++/Js/Go)

10.28华为OD机试真题 新系统 - 社交网络消息转发 (Java/Py/C/C++/Js/Go)

算法大师! 436

非递归实现二叉树遍历(附c++完整代码)

先序、中序和后序遍历过程:遍历过程中经过结点的路线一样,只是访问各结点的时机不同。 从图中可以看到,前序遍历在第一次遇见元素时输出,中序遍历在第二次遇见元素时输出,后序遍历在第三次遇见元素时输出。 非递归算法实现的基本思路:使用堆栈 一、前序遍历 1、递归实现 遍历过程为: 访问根结点; 先序遍历其左子树; 先序遍历其右子树。 void ProOrderTraverse(BiTree tre...

桑凯旋的博客 2万+

【Transformer】小白入门指南

Transformer是起源于NLP领域,然后在图像、视频、声音等领域都得到了广泛应用的基础架构,是继MLP、CNN、RNN’后的公认的第四大基础模型结构。Transformer技术凭借其卓越的表现和广泛的应用前景,已经成为了机器学习领域的一个关键技术。自从2017年Google提出》一文以来,Transformer架构的出现彻底改变了机器学习和深度学习的格局,尤其是在处理语言模型、生成模型以及多模态学习等领域,Transformer几乎成为了不可或缺的技术基石。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 2523

【2025年华为秋招(AI)-11月19日-第一题(100分)- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要: 本文包含15道单选题和5道多选题,涵盖机器学习、深度学习、概率统计和数值计算等多个领域。单选题涉及Transformer的Softmax层作用、最小二乘法拟合、概率密度计算、注意力机制、反向传播问题、ROC曲线用途、截断误差来源等知识点。多选题考察大模型训练技术、BERT/GPT比较、强化学习对齐方法、CNN常见层以及PCA特性等内容。题目设计注重理论与实践结合,既包含数学推导,又关注前沿技术应用,全面检验读者对机器学习核心概念的理解能力。正确答案均附有详细解析,帮助理解相关技术原理。

m0_73659489的博客 147

二叉树的先序、中序、后序遍历C++

先遍历根(父)节点、再遍历左节点、最后遍历右节点。注意这里说的遍历并不是行走。毕竟我们能够先取到的指针只有根节点指针,而如果想找一个节点,则一定要先找到它的根节点。这里的遍历指的是“介绍”这棵树的方式。通常来讲,我们是使用的打印的方式“介绍”一棵树的。所以,先序遍历展开来讲是如果一棵树上有根节点,则先输出根节点,再输出左孩子节点、最后输出右孩子节点。例如,上述图1中的二叉树,先序遍历输出是先遍历输出左孩子节点,再遍历输出根节点,最后遍历输出右孩子节点。例如,上述图1中的二叉树,中序遍历输出是。...

ymhdt的博客 3万+

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

《C++ 二叉树:前序、中序、后序遍历递归与非递归实现》

前序遍历、中序遍历、后序遍历的递归实现很简单,但是非递归迭代实现就有稍微有点难理解了。用了同一种思路,把树分为左路节点和左路节点的右子树,针对这三种遍历方式都适用。从根本上就是用循环模拟递归的过程。后序遍历相对前序和中序又稍微复杂,要考虑好访问节点的条件,避免死循环。多画图模拟迭代的过程更容易理解。

2202_75924820的博客 3036

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

二叉树的前序、中序、后序三种遍历的六种实现方式(递归、非递归)(C++)

实现语言:C++ 存储方式:链式存储 struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int x):val(x),left(NULL),right(NULL); }一、前序遍历 前序遍历方式:根左右 递归实现:递归实现的方式代码一般比较简单快捷。 voi

牛遛遛 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【C++】二叉树的前序中序后序非递归实现

【C++】二叉树的前序中序后序非递归实现

weixin_60478154的博客 1504

二叉树的非递归遍历(前序中序后序非递归C语言)

前两天做数据结构实验,要求用非递归算法遍历二叉树。只知道用栈来储存数据,具体算法还不太清楚。经过两天的搜索,看到网上很多种解法,很多解法都是用C++来写的算法,一直找不到用C语言写的算法,所以就总结了一下,用C写出了一个遍历二叉树的三种非递归算法。 前序遍历 前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。 具体算法:先遍历左孩子,并输出。当左孩子遍历完后,取栈顶,找右孩子。此时循环还没有结...

sinat_43009982的博客 6万+
上一篇: 【简单】852. 山脉数组的峰顶索引
下一篇: 【简单】104. 二叉树的最大深度
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值