后缀表达式转变成表达式树

后缀表达式:ab+cde+**

转换的表达式树:



转换步骤:

如果符号是操作数,那么就建立一个单节点树并将它推入栈中。

如果符号是操作符,那么就从栈中弹出两颗树 T1 和 T2 (T1 先弹出)并形成一棵新的树,该树的根就是操作符,它的左、右儿子分别是 T2 和 T1。然后将这颗新树压入栈中。


代码示例

import java.util.Stack;/*** 后缀表达式转换成表达式数* @author GongQiang**/
public class PostExpressionToTree {private Stack<TreeNode> stack = new Stack<TreeNode>();/*** @param args** Date	  :2012-6-27* Author :GongQiang*/public static void main(String[] args) {String postExpression = "ab+cde+**";PostExpressionToTree pett = new PostExpressionToTree();System.out.println( pett.transform( postExpression ) );}public String transform( String postExp ){for( int i=0 ; i<postExp.length() ; i++ ){char c = postExp.charAt(i);if( operandChar(c) ){TreeNode root = TreeNode.buildNode(c);TreeNode rightChild = stack.pop();TreeNode leftChild = stack.pop();root.setLeftChild( leftChild );root.setRightChild( rightChild );stack.push( root );}else{stack.push( TreeNode.buildNode(c) );}}// 打印表达式树StringBuilder sb = new StringBuilder();printTree( sb, stack.pop() );return sb.toString();}/*** 中序遍历打印* @param node* @return** Date	  :2012-6-27* Author :GongQiang*/private void printTree( StringBuilder sb,TreeNode node ){if( node.leftChild != null ){printTree( sb, node.leftChild );}sb.append( node.c );if( node.rightChild != null ){printTree( sb, node.rightChild );}}/*** 是操作符 ?* @return** Date	  :2012-6-26* Author :GongQiang*/private boolean operandChar( char c ){char[] operands = { '+', '*', '(', ')' };for( char op : operands ){if( c == op ){return true;}}return false;}/*** 构造数的节点类* @author GongQiang**/static class TreeNode{char c;TreeNode leftChild;TreeNode rightChild;public TreeNode getLeftChild() {return leftChild;}public void setLeftChild(TreeNode leftChild) {this.leftChild = leftChild;}public TreeNode getRightChild() {return rightChild;}public void setRightChild(TreeNode rightChild) {this.rightChild = rightChild;}private TreeNode(char c, TreeNode leftChild, TreeNode rightChild) {super();this.c = c;this.leftChild = leftChild;this.rightChild = rightChild;}static TreeNode buildNode( char c ){return new TreeNode( c, null, null );}static TreeNode buildNode( char c, TreeNode leftChild, TreeNode rightChild ){return new TreeNode( c, leftChild, rightChild );}}}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux用户组登录,linux用户和用户组

1.用户组和权限管理用户分为三类&#xff1a;1.1 超级用户&#xff1a;root uid0,简单来说uid为0的用户就是超级用户。1.2 虚拟用户&#xff1a;存在linux中&#xff0c;满足文件或者程序运行的需要&#xff0c;而创建的。不能登录&#xff0c;不能使用。uid1-499,1-999(centos…

人工智能和厨房电器的结合:厨房助理机器人

来源&#xff1a;人工智能学家AItists概要&#xff1a;从智能家居到无人驾驶&#xff0c;人工智能正在落地的道路上。而其中一个让人觉得有点意外也很有趣的场景是&#xff1a;厨房。从智能家居到无人驾驶&#xff0c;人工智能正在落地的道路上。而其中一个让人觉得有点意外也很…

美国科学院学报:如何在竞争激烈的环境下维持稳定的群体

行为决策演化示意图。最上面一行是混合群体&#xff0c;下面两行是网络群体。相比于混合群体&#xff0c;网络促使合作者聚集成团簇&#xff0c;但是惩罚的加入将破坏合作环境。来源&#xff1a;中国科学院西安光机所李学龙研究员同合作者在数据驱动的行为决策研究方面取得阶段…

全球首个Magic Leap One体验:吓到你不敢进房间

来源&#xff1a;智东西概要&#xff1a;业内备受关注的AR技术公司Magic Leap&#xff0c;在获得19亿美元融资历经七年之后&#xff0c;终于放出其第一款头盔产品Magic Leap One&#xff0c;很快在科技圈、VR圈引起刷屏式关注。昨夜&#xff0c;业内备受关注的AR技术公司Magic …

ftp+linux+使用webdav,群晖-win/mac/nfs ftp tftp webdav文件服务的概念及设置

应用程序级别WebDAV 是一个 HTTP 的扩充服务&#xff0c;可让用户编辑和管理存储在远程服务器上的文件。通过 Synology DiskStation Manager 的 WebDAV 服务&#xff0c;支持 WebDAV 的客户端程序(如 Windows 资源管理器、Mac OS Finder、Linux 资源管理器)将能够远程访问 Syno…

二叉堆

满足如下结构性和堆序性&#xff0c;即为二叉堆。 结构性质&#xff1a;堆是一棵被完全填满的二叉树&#xff0c;有可能的例外是在底层&#xff0c;底层上的元素从左到右填入。这样的树称为完全二叉树。 容易证明&#xff0c;一棵高为 h 的完全二叉树有 2h 到 2h1-1 个节点。这…

伯克利AI研究院解析「反向课程学习」,改善「强化学习智能体」并应用于机器人技术

原文来源&#xff1a;arXiv作者&#xff1a;Wieland Brendel、Jonas Rauber、Matthias Bethge「雷克世界」编译&#xff1a;嗯~阿童木呀、哆啦A亮众所周知&#xff0c;强化学习&#xff08;RL&#xff09;是一种强大的技术&#xff0c;它能够解决诸如移动&#xff08;locomotio…

《Science》评选2017年十大科学突破,看看有哪些吧!

来源&#xff1a;材料科学与工程概要&#xff1a;美国《科学》杂志21日公布了其评选出的2017年十大科学突破&#xff0c;人类首次观测到双中子星并合事件被选为头号科学突破。美国《科学》杂志21日公布了其评选出的2017年十大科学突破&#xff0c;人类首次观测到双中子星并合事…

2017年深度学习重大研究进展全解读

来源&#xff1a;机器之心概要&#xff1a;想知道哪些深度学习技术即将影响我们的未来吗&#xff1f;本文将给你作出解答。2017 年只剩不到十天&#xff0c;随着 NIPS 等重要会议的结束&#xff0c;是时候对这一年深度学习领域的重要研究与进展进行总结了。来自机器学习创业公司…

linux管道符加空格吗,管道符,作业控制,变量以及变量配置文件

一、管道符前面已经提过过管道符 “|”, 就是把前面的命令运行的结果丢给后面的命令。# cat 1.txt | wc -l //显示1.txt文件行数二、作业控制当运行进程时&#xff0c;你可以使它暂停(按CtrlZ组合键)&#xff0c;然后使用fg(foreground的简写)命令恢复它&#xff0c;或是利用bg…

自动驾驶汽车硬件与软件技术介绍

来源&#xff1a;知乎概要&#xff1a;本文详细介绍了自动驾驶汽车的硬件和软件&#xff0c;以及所需要做的准备工作&#xff0c;每个研发者或者准备投身于无人驾驶领域的人都应该好好看一下。全球有数不清的公司在忙着研发自动驾驶汽车&#xff0c;他们的产品也千奇百怪&#…

DeepMind 的2017:有 AlphaGo,更有社会责任

来源&#xff1a;AI科技评论概要&#xff1a;DeepMind 相信 AI 在更复杂的问题上也能起到同样的作用&#xff0c;它可以是科学技术工具&#xff0c;也可以是人类创造力的倍增器。AlphaGo 团队现在已经把注意力转向了另一组宏伟的目标&#xff0c;DeepMind 自己也希望这些研究人…

2018年人工智能13大预测

来源&#xff1a;英伟达概要&#xff1a;2017 年人工智能领域取得了许多里程碑式的成果。那么&#xff0c;以后人工智能又会如何发展呢&#xff1f;2017年被《华尔街日报》、《福布斯》和《财富》等刊物称为“人工智能之年”。各种深度学习在线课程不断推出&#xff0c;接受相关…

2017年全球AI芯片公司大盘点

来源&#xff1a;芯师爷概要&#xff1a;2017年&#xff0c;我们被AI公司的融资信息一次次刷屏&#xff0c;从2千万到1亿美金&#xff0c;让我惊诧道&#xff0c;AI的黄金年代真的来了吗&#xff1f;2017年&#xff0c;我们被AI公司的融资信息一次次刷屏&#xff0c;从2千万到1…

邬贺铨:工业物联网的技术与前景

来源&#xff1a;走向智能论坛概要&#xff1a;工业物联网是企业信息化的进程&#xff0c;我们经历了流程电子化、管理数字化、生产自动化到企业互联网化和企业智能化。邬贺铨&#xff1a;工业物联网靠花钱是买不到的&#xff01;12月20日&#xff0c;2017第八届中国物联网产业…

30亿美金投入!一文读懂英伟达性能凶残的Tesla V100牛在哪?

来源&#xff1a;智东西概要&#xff1a;AI已无处不在&#xff0c;两股力量正推动计算机领域的未来。GTC CHINA 2017大会上&#xff0c;英伟达创始人兼CEO黄仁勋表示&#xff0c;AI已无处不在&#xff0c;两股力量正推动计算机领域的未来。第一、摩尔定律已终结&#xff0c;设计…

C语言的数组基础,C语言基础-数组

一、数组(一维数组)什么是数组&#xff1f;数组是一组有序的、类型相同的数据的集合数组的作用&#xff1f;处理一些类型相同的数据集合数组的构成&#xff1a;元素、下标或索引、数组名定义&#xff1a;使用前必须定义1、存储类型2、数据类型3、数组名4、数组大小语法&#xf…

世界类脑AI巨系统研究综述,论ET大脑是不是全球首个类脑架构AI

前言&#xff1a;2017年12月20日阿里云云栖大会提出ET大脑&#xff0c;并宣称为全球首个类脑架构AI&#xff0c;本文详细介绍了类脑AI系统的理论研究和发展现状&#xff0c;分析了ET大脑理论的沿袭与借鉴。并指出企业为提升影响里推动新概念新理论无可厚非&#xff0c;但涉及到…

Netflix 官方技术博客:个性化分发与推荐,走在前列的 Netflix 是怎么做的?

来源&#xff1a;36氪概要&#xff1a;对于个性化分发与推荐&#xff0c;Netflix都是一个走在前面的公司。其首页的个性化推荐策略不断被后来者所模仿。对于个性化分发与推荐&#xff0c;Netflix都是一个走在前面的公司。其首页的个性化推荐策略不断被后来者所模仿。近日&#…

android主要文件的作用是什么,androidmanifest.xml文件的作用是什么

androidmanifest.xml文件的作用&#xff1a;1、是每个android程序中必须的文件&#xff0c;它位于整个项目的根目录&#xff1b;2、配置程序运行所必要的组件&#xff0c;权限&#xff0c;以及一些相关信息&#xff1b;3、是整个应用的入口&#xff0c;所以有助于更加深入的理解…