当前位置: 首页 > news >正文

环保公司网站模板金华建站方案

环保公司网站模板,金华建站方案,可以个人开店的电商平台,网站开发记科目问题背景 1. 实现一个简单的计算器。通过键盘输入一个包含圆括号、加减乘除等符号组成的算术表达式字符串#xff0c;输出该算术表达式的值。要求#xff1a; #xff08;1#xff09;系统至少能实现加、减、乘、除等运算#xff1b; #xff08;2#xff09;利用二叉…问题背景 1. 实现一个简单的计算器。通过键盘输入一个包含圆括号、加减乘除等符号组成的算术表达式字符串输出该算术表达式的值。要求 1系统至少能实现加、减、乘、除等运算 2利用二叉树算法思想求解表达式的值先构造由表达式构成的二叉树按中序、后序遍历的方式输出二叉树中的结点然后再利用通过对二叉树进行后序遍历求解算术表达式的值。 思路描述 构建表达式二叉树先用栈将算术表达式转成后缀表达式具体思路参考再根据后缀表达式构建表达式二叉树构建过程从左到右扫描后缀表达式的每个元素如果当前元素是操作数则创建一个只包含该操作数的节点并将该节点压入栈中如果当前元素是操作符则创建一个只包含该操作符的节点并从栈中弹出两个节点作为其左右子节点再将该节点压入栈中。最后栈中唯一的节点即为根节点。表达式二叉树求值后序遍历二叉树递归计算左右子树的值代入运算符计算 代码实现 //二叉链表存储二叉树 public class TreeNode {String value;TreeNode left;TreeNode right;public TreeNode(String value){this.valuevalue;}public TreeNode(String value, TreeNode left, TreeNode right) {this.value value;this.left left;this.right right;} } public class Calculator {private TreeNode root;public Calculator() {root null;}public Calculator(TreeNode root) {this.root root;}//中缀转后缀List中每个元素就是后缀表达式中每个操作数或运算符public static ListString infixToPostfix(String infixExpression){StackCharacter operatorStacknew Stack();ListString postfixExpressionnew ArrayList();for(int i0;iinfixExpression.length();i){//如果是数字if(Character.isDigit(infixExpression.charAt(i))){//可能是多位的数StringBuilder tempnew StringBuilder();temp.append(infixExpression.charAt(i));while (iinfixExpression.length()Character.isDigit(infixExpression.charAt(i))){temp.append(infixExpression.charAt(i));}postfixExpression.add(temp.toString());i--;//while判断完后i多往后挪了一位所以要-1}//如果是左括号else if(infixExpression.charAt(i)(){operatorStack.push(infixExpression.charAt(i));}//如果是右括号去匹配左括号else if(infixExpression.charAt(i))){while (!operatorStack.empty()operatorStack.peek()!(){postfixExpression.add(operatorStack.pop());}operatorStack.pop();}//如果是-*/else {//将优先级当前运算符优先级的运算符pop出来追加到后缀表达式中while (!operatorStack.empty()getPrecedence(infixExpression.charAt(i))getPrecedence(operatorStack.peek())){postfixExpression.add(operatorStack.pop());}operatorStack.push(infixExpression.charAt(i));}}//将栈中剩余的运算符依次pop出来追加到结果中while (!operatorStack.empty()){postfixExpression.add(operatorStack.pop());}return postfixExpression;}//在中缀转后缀时要判断符号优先级private static int getPrecedence(char operator) {switch (operator) {case :case -:return 1;case *:case /:case %:return 2;default:return 0;}}//利用后缀表达式构建表达式二叉树public static TreeNode buildExpressionTree(ListString postfixExpression){StackTreeNode stacknew Stack();//从左至右遍历后缀表达式for(String str:postfixExpression){//如果是运算数if(str.charAt(0)48str.charAt(0)57){TreeNode treeNode new TreeNode(str, null, null);stack.push(treeNode);} else {//如果是运算符//从栈中弹出两个节点TreeNode pop1 stack.pop();TreeNode pop2 stack.pop();TreeNode treeNode new TreeNode(str, pop1, pop2);stack.push(treeNode);}}//最后栈中剩余的节点就是二叉树根节点return stack.peek();}//中序遍历表达式二叉树(左根右)public static void inorderTraversal(TreeNode treeNode){if(treeNodenull)return;inorderTraversal(treeNode.left);System.out.print(treeNode.value );inorderTraversal(treeNode.right);}//后序遍历表达式二叉树左右根public static void postorderTraversal(TreeNode treeNode){if(treeNodenull)return;postorderTraversal(treeNode.left);postorderTraversal(treeNode.right);System.out.print(treeNode.value );}//后序遍历表达式二叉树求值public int evaluateExpression(){return evaluateExpression(root);}public int evaluateExpression(TreeNode root){if(rootnull){return 0;}// 递归计算左右子树的值int leftValue evaluateExpression(root.left);int rightValue evaluateExpression(root.right);switch (root.value){case :return leftValuerightValue;case -:return leftValue-rightValue;case *:return leftValue*rightValue;case /:return leftValue/rightValue;default:// 如果是操作数则返回对应的整数值return Integer.valueOf(root.value);}} } 运行效果 public class Main {public static void main(String[] args) {System.out.println(请输入你要计算的表达式);Scanner sc new Scanner(System.in);String infixExpression sc.next();ListString postfixExpression Calculator.infixToPostfix(infixExpression);//中缀转后缀TreeNode binaryTree Calculator.buildExpressionTree(postfixExpression);//利用后缀表达式构建表达式二叉树System.out.print(中序遍历);Calculator.inorderTraversal(binaryTree);//中序遍历System.out.println();System.out.print(后序遍历);Calculator.postorderTraversal(binaryTree);//后序遍历System.out.println();Calculator calculator new Calculator(binaryTree);int i calculator.evaluateExpression();System.out.println(值为i);} }
http://www.huolong8.cn/news/285148/

相关文章:

  • 免费的网站有哪些平台抖音代运营传媒属于什么行业
  • 广州市用工备案在哪个网站做网络服务器机柜厂家
  • 南昌网站设计怎么选网页制作基础教程例子ppt
  • 做智能网站系统wordpress 新页面打开空白页
  • asp网站采集青岛网站排名优化公司哪家好
  • 哪个网站可以做结婚证地方旅游网站建设方案
  • 网站查询功能代码软文推广特点
  • 南京市公共建设中心网站网站策划的工作职责
  • 用nas做网站微信导航网站怎么做
  • 时代设计网 新网站深圳网络营销推广
  • 商场网站设计网站百度收录变少
  • 冬青街 做网站早期网页游戏
  • 青岛网站建设开发外包柯城建设局网站
  • 做网站时怎么让边框细一点手机网站如何做外链
  • 网站如何做搜索功能的细分网站
  • 别人买了域名做违法网站哔哩哔哩网页版缓存视频在哪里
  • 甘肃省安装建设集团公司网站免费ppt模板下载免费版简约
  • 新河网站天河商城型网站建设
  • 策划类网站最便宜做网站的方法
  • 做ppt时网站怎么设计ui设计培训机构学费
  • 榆次做网站单页面推广网站模版
  • 网站推广怎么弄福州市住房和城乡建设网站
  • 找网络公司建网站每年收维护费江门市网站建设
  • 天津网站建设哪家设计好环球资源网的优势
  • 网站验证沙田镇做网站
  • 供求网站建设国土资源集约化网站群建设通知
  • 网站建设对于企业的必要性信息化项目建设背景
  • 阜新全网营销网站建设阿里云怎么做淘宝客网站
  • 广州建网站的公司在什么网站可以接活做
  • 设计师一般放作品的网站右糖视频制作