从后缀表达式建立表达式树

【数据结构与算法】总结篇:中缀表达式转后缀表达式 与 表达式树 同样是借助一个栈,然后对表达式进行扫描,如果扫描到是是数字或者字符则直接入栈,如果扫描到的是运算符,则弹出栈顶两个元素,重新构造二叉树。’运算符比‘+’运算符的优先级高,所以循环执行出栈操作,直到运算符优先级小于‘+’。由于’+'的运算符优先级等于‘+’,所以栈内运算符都被弹出,‘扫描到的+’入栈。根据表达式树的前序遍历,中序遍历,后序遍历,我 们分别可以得出常见的三种表达式,前缀表达式,中缀表达式与后缀表达式,然后扫描遇到‘+’号,乘号的运算级高于’+‘号,所以称号直接弹出栈输出,’+'号入栈。 阅读详情

怎么想起总结算法了

在一个公司呆久了,不出去看看,你永远不知道你的水平如何,你值多少钱。也就是说,作为一个技术人员,应该每隔4、5个月,出去参加几次面试,看看自己的技术水平有没有和IT圈脱节。但更多的是在寻找更好的机会,找一份更适合自己,待遇更高的工作。 好了,从今天起,每天都总结一个小的数据结构与算法知识,一来扩充自己的知识;二来你懂的。

二叉树的遍历

对于二叉树无非就三种遍历方式:

  • 前序遍历;
  • 中序遍历;
  • 后序遍历;

对于这三种遍历方式,我通过下面这张图来详细的介绍一下我的方法。 alt

  • 前序遍历:访问根节点->遍历左子树->遍历右子树
  • 中序遍历:遍历左子树->访问根节点->遍历右子树
  • 后序遍历:遍历左子树->遍历右子树->访问根节点

对于上图中的二叉树,分别使用三种遍历得到的结果分别是:

  • 前序遍历:A->C->D->G->H->S
  • 中序遍历:D->C->G->A->H->S
  • 后序遍历:D->G->C->S->H->A

二叉树的主要用处之一是在编译器设计领域,如下图所示的二叉树: alt

这是一个颗表达式树,对这个二叉树进行后续遍历,得到的结果是:
a b + c d e + d * *
而这种表达式也叫做后缀表达式,很多时候,我们需要根据后缀表达式重新建立一颗二叉树。下面就使用代码实现这种需求。

从后缀表达式建立表达式树

比如现在有以下一个后缀表达式:
a b + c d e + * *
根据这个后缀表达式建立二叉表达式树,算法如下:
1. 依次读取表达式;
2. 如果是操作数,则将该操作数压入栈中;
3. 如果是操作符,则弹出栈中的两个操作数,第一个弹出的操作数作为右孩子,第二个弹出的操作数作为左孩子;然后再将该操作符压入栈中。

这样下去,就可以建立一颗完整的表达式树。

代码简单实现

下面就使用C++代码进行了简单的实现。

定义树节点信息。

typedef struct BinaryNode
{
    char data;
    BinaryNode *left;
    BinaryNode *right;
}TreeNode;

创建一个新的节点。

TreeNode* CreateTreeNode(char ch)
{
    TreeNode *pNode = new TreeNode;
    pNode->data = ch;
    pNode->left = NULL;
    pNode->right = NULL;
    return pNode;
}

读取表达式,创建表达式树。

stack<TreeNode *> nodeStack;

char ch;
while ((ch = getchar()) != '\n')
{
    TreeNode *pNode = CreateTreeNode(ch);
    if (ch == '+' || ch == '-' || ch == '*' || ch == '/')
    {
        TreeNode *pRight = nodeStack.top();
        nodeStack.pop();
        TreeNode *pLeft = nodeStack.top();
        nodeStack.pop();

        pNode->right = pRight;
        pNode->left = pLeft;
        nodeStack.push(pNode);
    }
    else
    {
        nodeStack.push(pNode);
    }
}

 文章来源:http://www.jellythink.com/archives/688

浅谈表达式求值问题 1. 前言 经常会遇到这样一种类型的编程题目,给定一个合法算术运算式字符串(本文不考虑非法情况的判断和处理),求出它的计算结果,通常字符串中包含了 +-×/ 四则运算、改变运算优先级的括号 () 以及整数数字. 例如,要求程序输入 2×5+6×(3+2)2×5+6×(3+2)2×5+6×(3+2) 这样一个字符串,输出其正确的计算结果也就是 404040 . 2. 表达式表示法 表示方法有 3 种,分别是前缀表达式(波兰表达式)、中缀表达式、后缀表达式(逆波兰表达式),以之前的例子 2×5+6×(3+2) 阅读详情

相关推荐

【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)

【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)

weixin_57514792的博客 1104

表达式树

用到了栈,并且递归实现了中序遍历,后序遍历,前序遍历。 同时应该学会union的使用方法。 基础知识: 一、表达式树          表达式树的树叶是操作数(operand),加常数或变量名字,而其他的结点为操作数(operator)。由于这里所有的操作都是二元的,因此这棵特定的树正好是二叉树,虽然这是最简单的情况,但是结点还是有可能含有多于两个的儿子,这里我们不讨

buaa_shang的专栏 1万+

Python实战:3分钟搞定A股K线数据抓取(附东方财富/腾讯API完整代码)

本文为量化交易初学者提供了一份快速获取A股K线数据的实战指南。通过对比东方财富与腾讯财经两大免费API的优劣,并附上可直接运行的完整Python代码,帮助读者在3分钟内搭建起自己的数据抓取管道,为构建量化交易系统奠定坚实的数据基础。

weixin_29062255的博客 2909

0011从后缀表达式与二叉树的关系

本文转自:http://www.jellythink.com/archives/688 二叉树的遍历 对于二叉树无非就三种遍历方式: 前序遍历;中序遍历;后序遍历; 对于这三种遍历方式,我通过下面这张图来详细的介绍一下我的方法。  前序遍历:访问根节点->遍历左子树->遍历右子树中序遍历:遍历左子树->访问根节点->遍历右子树后序遍历:遍历左子树->遍历右子树->访问

gendlee1991的专栏 1143

benders分解算法 逻辑思路整理(加星)

一般我们经常可以看到的是经典的benders,此处我也结合经典的benders梳理下思路。

sinat_41348401的博客 7986

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

TFN_yzgd的博客 926

C++代码实现中缀表达式转化为二叉树,并实现先序中序后序层次遍历输出

【代码】C++代码实现中缀表达式转化为二叉树,并实现先序中序后序层次遍历输出。

2202_76009199的博客 1318

QCC308x/3095收发一体:TX/RX双模一拖二与多编码广播实战解析

本文深度解析高通QCC308x/3095蓝牙音频芯片的TX/RX双模功能与广播应用。芯片支持发射和接收模式下的“一拖二”连接,并能实现LE Audio多设备广播,显著提升多设备音频切换体验与商业广播能力,适用于健身、导览等丰富场景。

g9h0i1的博客 1003

【数据结构】超详细讲解:算术表达式转化为后缀表达式、前缀表达式、表达式树的构建

中缀表达式:中缀表达式是我们常见的数学表达式,其中运算符放置在两个操作数中间,例如:3 + 4 * 2。在中缀表达式中,还可以包含括号,用于改变运算符的优先级。后缀表达式:后缀表达式(也称为逆波兰表达式)是一种将运算符放置在操作数后面的表达式,例如:3 4 2 * 1 5 - 2 ^ / +。在后缀表达式中,所有操作符的优先级相同,而括号则不再需要。前缀表达式:前缀表达式(也称为波兰表达式)是一种将运算符放置在操作数前面的表达式,例如:+ / * 3 4 2 ^ - 1 5 2。

Yaoyao2024的博客 2万+

港口集装箱码头运营FlexSim仿真

列队4中的集装箱会根据不同类型的集装箱会放置在不同的堆场,因此根据前面对集装箱设置的标签Type的数值不同,设置不同的发送端口。集装箱到达列队3后,会有70%的集装箱到达堆场,30%的集装箱运出港口,因此在Queue列队3的Flow界面设置按照百分比发送端口,其中70%发送到端口1,即发送到列队4等待进入堆场,30%发送到端口2,即发送至出闸口。通过上述对比表格可以看出,当集卡数量在10的时候,岸桥和场桥的设备利用率达到了最高,当集卡数量为12的时候场桥1和场桥3的利用率有所下降,因此综合考虑。

m0_72514516的博客 1331

YOLOv11-seg改进系列 | 引入CVPR2022 MetaFormer,零参数池化Token混合+StarReLU MLP,精度涨不掉速

本文提出了一种改进YOLOv11分割任务的C3k2_PoolingFormer模块,通过引入MetaFormer架构和Pooling Token Mixer,在保持模型轻量化的同时增强全局感受野建模能力。核心创新包括:1)使用零参数的AvgPool3×3差值作为Token Mixer,实现高效邻域信息聚合和局部对比增强;2)采用StarReLU MLP替代传统激活函数,提升非线性表达能力。改进后模型仅增加6.1%参数量,却能显著提升分割精度,特别适用于需要长程依赖建模的实例分割任务。该设计为轻量级视觉模型提

qq_44224801的博客 431

由后缀表达式建立表达式树

给出后缀表达式,建立表达式树。后缀表达式中只有操作数和操作符,我们知道,操作数一定是表达式树的叶子结点,操作符一定是父结点。 这个过程与计算后缀表达式的值的过程极为类似。 操作数,作为叶子结点,可以看作是左右儿子都为NULL的父结点,因此也可以看作一棵二叉树。 因此算法是,建立一个二叉树栈,扫描后缀表达式: 1.若遇到操作数,把其作为左右儿子都为NULL的二叉树,根

null 3720

TPM 2.0实例探索2 —— LUKS磁盘加密(1)

本文对LUKS行了系统介绍

phmatthaus的专栏 1699

java建立表达式树,Java实现后缀表达式建立表达式树

概述表达式树的特点:叶节点是操作数,其他节点为操作符。由于一般的操作符都是二元的,所以表达式树一般都是二叉树。根据后缀表达式"ab+cde+**"建立一颗树文字描述:如同后缀表达式求值一样,逐个读取后缀表达式的每一个符号,如果遇到操作数,建立一个节点把操作数的值加入这个节点,并把节点入栈;如果遇到操作符,弹出栈里的两个节点,并赋值为自己的左子节点、右子节点,最后把这个节点树入栈。画图描述:1、读入...

weixin_35009071的博客 535

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java实现后缀表达式建立表达式树

概述 表达式树的特点:叶节点是操作数,其他节点为操作符。由于一般的操作符都是二元的,所以表达式树一般都是二叉树。 根据后缀表达式"ab+cde+**"建立一颗树 文字描述: 如同后缀表达式求值一样,逐个读取后缀表达式的每一个符号,如果遇到操作数,建立一个节点把操作数的值加入这个节点,并把节点入栈;如果遇到操作符,弹出栈里的两个节点,并赋值为自己的左子节点、右子节点,最后把这个...

atu99602的博客 469

温度PID控制PLC程序

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

java建立表达式树_Java实现后缀表达式建立表达式树

概述表达式树的特点:叶节点是操作数,其他节点为操作符。由于一般的操作符都是二元的,所以表达式树一般都是二叉树。根据后缀表达式"ab+cde+**"建立一颗树文字描述:如同后缀表达式求值一样,逐个读取后缀表达式的每一个符号,如果遇到操作数,建立一个节点把操作数的值加入这个节点,并把节点入栈;如果遇到操作符,弹出栈里的两个节点,并赋值为自己的左子节点、右子节点,最后把这个节点树入栈。画图描述:1、读入...

weixin_32626635的博客 344

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

2021-01 算法 后缀表达式建立表达式树

## 伪代码 FOR each char in string: IF char is num : new node(num), then push ptr into stack. ELSE IF char is Ops: get top-2 of stack as l、r, then new node(Ops,l,r), push ptr into stack. ...

六根胡子 255

后缀表达式建立表达式树。前序遍历、中序遍历和后序遍历(递归)

二叉树类: #ifndef TNODE_H #define TNODE_H template class tnode { public: tnode* left, right; //一个节点由三部分构成,指向左子树的指针,指向右子树的指针和它自己的值 int tnodeValue; tnode():left (NULL),right(NULL) {} tn

yogima的博客 2466

后缀表达式与中缀表达式转化+括号最优化(后缀建立表达式树) + 综合练习 HDU1123 Complicated Expressions

中缀转后缀: 流程: 用一个栈用来存储表达式中的符号; 遍历中缀表达式: 1.若当前字符为字母,则加入输出队列 2.若当前字符为运算符: 若当前栈空或栈顶元素为左括号 或 优先级小于当前运算符,则入栈; 若当前符号为右括号,则一直出栈直到遇到左括号,并加入输出队列,右括号不入栈; 若当前运算符优先级低于或者等于当前栈顶元素,则一直出栈遇到左括号或栈顶元素优先级小于当前运算符,并加入输出队列,最...

Dave_lzw的博客 963

算法学习 - 表达树的建立(后缀表达式法),树的先序遍历,中序遍历,后序遍历(非递归)...

表达树就是依据后缀表达式来建立一个二叉树。 这个二叉树的每一个叶子节点就是数。真祖先都是操作符。 通过栈来建立的,所以这里也会有非常多栈的操作。 树的先序遍历。中序遍历。后序遍历的概念我就不讲了,不会的自行百度,不然也看不懂我的代码。 以下是代码: // // main.cpp // expressionTree // // Created by Alps o...

diandingyin9417的博客 310

算法学习 - 表达树的建立(后缀表达式法),树的先序遍历,中序遍历,后序遍历(非递归)

表达树就是根据后缀表达式来建立一个二叉树。 这个二叉树的每个叶子节点就是数,真祖先都是操作符。 通过栈来建立的,所以这里也会有很多栈的操作。 树的先序遍历,中序遍历,后序遍历的概念我就不讲了,不会的自行百度,不然也看不懂我的代码。 下面是代码: // // main.cpp // expressionTree // // Created by Alps on 14-7-29. //

累了就歇一会 2538

复试上机指南之中缀、后缀表达式

输入表达式,输出值。分两种情况:中缀表达式和后缀表达式。中缀表达式求值:先将中缀表达式建立二叉树转后缀表达式,然后再求值。 code #include <iostream> #include <string> #include <string.h> #include <math.h> #include <stdlib.h> using...

菜鸟算法 246

【黑皮树】表达式树

表达书的介绍 树和栈的结合利用产生表达式树

2401_86738532的博客 705

数据结构与算法——Java实现 45.根据后缀表达式建树

使用栈对后缀表达式从左到右进行遍历,对后缀表达式中的每一个字符进行判断,如果是数字则入栈,如果是字符则将栈中的元素出栈,先出的元素建立在符号的右子树,后出的元素为左子树,然后再将这个字符进行入栈,继续遍历。反向思考,要想验证出所建立的二叉树,最后将二叉树进行后序遍历,与给出的后缀表达式进行比较,则可以判断是否正确。根据后缀表达式建的树,进行后序遍历,求得的表达式应该是原来的后缀表达式。3.先弹栈的是右孩子,后弹栈的是左孩子。,求得的表达式应该是原来的后缀表达式。先弹栈的是右孩子,后弹栈的是左孩子。

m0_73983707的博客 756
上一篇: 十大排序算法实现
下一篇: 阿里云Maven库配置
! 不再维护
博客等级 码龄11年 63粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值