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;
    }
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    学习OpenStack之(6):Neutron 深入学习之 OVS + GRE 之 Compute node 篇
    学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境
    学习OpenStack之 (3):Devstack Screen 使用技巧
    C语言 fread()与fwrite()函数说明与示例
    win C/C++程序通过Get方式获取网页源代码
    ubuntu/wireshark: There are no interfaces on which a capture can be done.故障解决
    [转]VS2010快捷键
    C/C++/Java 程序计时功能函数
    程序设计中使用的那些共享方法或者技术
    GPU/CUDA程序初体验 向量加法
  • 原文地址:https://www.cnblogs.com/tsruixi/p/13081018.html
Copyright © 2011-2022 走看看