zoukankan      html  css  js  c++  java
  • A1130 Infix Expression (25分)

    一、技术总结

    1. 这题是关于二叉树,使用中序遍历的方法进行输出一个算式,要加括号,最外层不用加。
    2. 存储使用node结构体,数值跟左右子树;同时使用have数组用于判断根结点开始的位置。
    3. 使用dfs进行深度遍历:会出现四种情况(但是有一种不会出现,即左子树不空右子树为空的情况):
    • 左右子树都为空
    • 左空右不空
    • 右空左不空
    • 左右都不空
    1. 这里可能会有担心,在dfs中顺序有关系吗,答案是没有关系的,遍历会按照中序遍历的结果返回。
    2. 这里还有介绍string的几个函数,一个是size()返回字符串中字符的数量,等于length(),还有就是字符串截取函数substr(),如str.substr(n, m)表示从str字符串的第n个字符开始,取m个字符。

    二、参考代码

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
    	string data;
    	int L, R;
    }ans[100];
    string dfs(int root){
    	if(ans[root].L == -1 && ans[root].R == -1) return ans[root].data;
    	if(ans[root].L != -1 && ans[root].R != -1) return "(" + dfs(ans[root].L)+ ans[root].data + dfs(ans[root].R) + ")";
    	if(ans[root].L == -1 && ans[root].R != -1) return "(" + ans[root].data + dfs(ans[root].R)+ ")";
    }
    int main(){
    	int have[100] = {0}, n, root = 1;
    	scanf("%d", &n);
    	for(int i = 1; i <= n; i++){
    		cin >> ans[i].data >> ans[i].L >> ans[i].R;
    		if(ans[i].L != -1) have[ans[i].L] = 1; 
    		if(ans[i].R != -1) have[ans[i].R] = 1; 
    	}
    	while(have[root] == 1) root++;
    	string ans = dfs(root);
    	if(ans[0] == '(') ans = ans.substr(1, ans.size() - 2);
    	cout <<ans;
    	return 0;
    }
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    orleans 的一种模式
    在.net4的环境下使用Microsoft.AspNet.SignalR.Client 2.4.0
    微信卡券领用的附加测试
    SVN忽略本地文件不提交,同时不删除服务器上的文件
    SQL Server 2017安装错误:Polybase要求安装Oracle JRE 7更新51或更高版本的两种解决方法
    SQL Server遍历表(临时表)
    无法确定条件表达式的类型,因为“DateTime”和“<null>”之间没有隐式转换|Nullable类型问题与?:条件运算符
    C# 反射获取对象的内容
    c# 计算执行时间,性能,运行时间Stopwatch
    JS,JQuery循环数组,循环对象生成需要的数据
  • 原文地址:https://www.cnblogs.com/tsruixi/p/13081018.html
Copyright © 2011-2022 走看看