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

企业网站制作托管技术培训平台

企业网站制作托管,技术培训平台,做网站联系我们在那个板块里面,江苏省网站备案目录 树结构及其算法-二叉运算树 C代码 树结构及其算法-二叉运算树 二叉树的应用实际上相当广泛,例如表达式之间的转换。可以把中序表达式按运算符优先级的顺序建成一棵二叉运算树(Binary Expression Tree,或称为二叉表达式树)…

目录

树结构及其算法-二叉运算树

C++代码


树结构及其算法-二叉运算树

二叉树的应用实际上相当广泛,例如表达式之间的转换。可以把中序表达式按运算符优先级的顺序建成一棵二叉运算树(Binary Expression Tree,或称为二叉表达式树)。之后按二叉树的特性进行前、中、后序的遍历,即可得到前、中、后序表达式,建立的方法可根据以下两种规则来进行操作:

  1. 考虑表达式中运算符的结合性与优先权,再适当地加上括号。
  2. 由最内层的括号逐步向外,利用运算符当树根,左边操作数当左子树,右边操作数当右子树,其中优先权最低的运算符作为此二叉运算树的树根。

C++代码

#include<iostream>
using namespace std;struct TreeNode {int data;TreeNode* leftNode;TreeNode* rightNode;TreeNode() {this->data = ' ';this->leftNode = nullptr;this->rightNode = nullptr;}TreeNode(int tempData, TreeNode* tempLeftNode = nullptr, TreeNode* tempRightNode = nullptr) {this->data = tempData;this->leftNode = tempLeftNode;this->rightNode = tempRightNode;}
};namespace Tree {TreeNode* CreateExpression(char* sequence, int index, int arraySize) {TreeNode* _TreeNode;if (sequence[index] == ' ' || index >= arraySize)return nullptr;else{_TreeNode = new TreeNode((int)sequence[index]);_TreeNode->leftNode = CreateExpression(sequence, 2 * index, arraySize);_TreeNode->rightNode = CreateExpression(sequence, 2 * index + 1, arraySize);return _TreeNode;}}void Preorder(TreeNode* tempTree) {if (tempTree != nullptr) {cout << (char)tempTree->data << " ";Preorder(tempTree->leftNode);Preorder(tempTree->rightNode);}}void Inorder(TreeNode* tempTree) {if (tempTree != nullptr) {Inorder(tempTree->leftNode);cout << (char)tempTree->data << " ";Inorder(tempTree->rightNode);}}void Postorder(TreeNode* tempTree) {if (tempTree != nullptr) {Postorder(tempTree->leftNode);Postorder(tempTree->rightNode);cout << (char)tempTree->data << " ";}}int Condition(char tempOperator, int num1, int num2) {switch (tempOperator){case '*':return (num1 * num2);case '/':return (num1 / num2);case '+':return (num1 + num2);case '-':return (num1 - num2);case '%':return (num1 % num2);}}int Answer(TreeNode* tempTreeNode) {int num1;int num2;if (tempTreeNode->rightNode == nullptr && tempTreeNode->leftNode == nullptr)return tempTreeNode->data - 48;else {num1 = Answer(tempTreeNode->leftNode);num2 = Answer(tempTreeNode->rightNode);return Condition((char)tempTreeNode->data, num1, num2);}}
};int main() {char data1[]{ ' ', '+', '*', '%', '6', '3', '9', '5' };TreeNode* treeNode;treeNode = Tree::CreateExpression(data1, 1, 8);cout << "前序遍历:" << endl;Tree::Preorder(treeNode);cout << endl;cout << "中序遍历:" << endl;Tree::Inorder(treeNode);cout << endl;cout << "后序遍历:" << endl;Tree::Postorder(treeNode);cout << endl;cout << "二叉运算树结果值:" << endl;cout << Tree::Answer(treeNode) << endl;return 0;
}

结果输出

http://www.ritt.cn/news/11889.html

相关文章:

  • 网站运营与推广计划书北京百度搜索排名优化
  • 网站做阿里妈妈流量网站
  • 山西省城乡住房和建设厅网站首页百度平台推广联系方式
  • 南京网站制作招聘百度地图推广
  • 网站三合一建设百度霸屏推广一般多少钱
  • 最新网站开发价格权重查询
  • 大型网站开发流程郑州搜索引擎优化公司
  • 做公众号选择图片的网站网站怎么注册
  • 我的免费网是个什么网站seo搜索价格
  • wordpress如何添加注册登录站长工具seo综合查询论坛
  • 横岗网站建设多少钱汕头seo公司
  • 福泉市自己的网站自媒体运营主要做什么
  • 企业网站建设具体步骤找个免费的网站
  • 工程机械 网站模板品牌营销推广方案怎么做
  • 社交类电商平台鹤壁搜索引擎优化
  • diy网站开发公司优化设计五年级下册数学答案
  • 厦门网站排名优化费用北大青鸟
  • 网站中宣传彩页怎么做的百度关键词排名联系
  • 个人域名备案做企业网站最吸引人的营销广告词
  • 苏州有什么好玩的地方seo人才招聘
  • 网站推广公司电话安徽做网站公司哪家好
  • 怎样设计一个公司网站关键词检索
  • 电脑网站做淘宝客c++线上培训机构哪个好
  • 怎么看别人的网站有没有做301如何在网上推广自己
  • 建设银行手机登陆网站优化百度seo技术搜索引擎
  • 阿里巴巴网站推广方法成都今天重大新闻事件
  • 制作网页按钮网站排名软件优化
  • 开发系统网站建设网站排名查询工具
  • 网站建设使用什么软件有哪些查淘宝关键词排名软件有哪些
  • 同人那个小说网站做的最好网店运营