您的位置:首页 > 其它

UVa 112 - Tree Summing

2012-07-31 09:43 218 查看
第一次做二叉树的题,参考了某大神的代码,充分领略到大神递归的境界,光研究他的代码就花了好几个小时,还看了cin.ignore(),cin.clear(),cin.fail()以及cin.sync()几个cin流的实质和妙用,完全连指针链表都没用只用递归就把此题给A掉了,受益不少啊~~~

代码如下:

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
int flag;
int t_sum(int n,int sum)
{
int data;
char c;
cin>>c;     //输入左括号
cin>>data;
if(!(cin==0))
{
sum+=data;
int ok1=t_sum(n,sum);  //左树
int ok2=t_sum(n,sum);  //右树
if(!ok1&&!ok2&&!flag)  //如果左右两树都为空,即是叶子,且flag还是0,那么对总和sum与n进行比较
if(sum==n)         //若相等则将flag赋为1
flag=1;
cin>>c;    //输入右括号
return 1;
}
else
{
cin.clear();  //清除错误
cin>>c;
return 0;
}
}
int main()
{
#ifdef test
freopen("sample.txt","r",stdin);
#endif
int n;
while(cin>>n)
{
flag=0;
t_sum(n,0);
cout<<(flag?"yes":"no")<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tree c