//做这题的时候真是把我纠结死,最后发现是《算法竞赛入门经典》的作者的代码有问题,特别是sscanf(&s[1],"%d",&x);addnode(v,strchr(s,',')+1);这2个语句不能直接读取"11,LL)"以及"LL)",而是把整个接受到的字符串都读取了,最后我对AddNode()做了递归运算才解决了这个问题。
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
#define MAXN 256
char s[MAXN+10];
int failed=0;
int n=0,ans[MAXN];
typedef struct TNode
{
int Have_Value;
int v;
struct TNode *Left,*Right;
}Node;
Node* root;
Node* NewNode()
{
Node* u=(Node*)malloc(sizeof(Node));
if(u!=NULL)
{
u->Have_Value=0;
u->Left=u->Right=NULL;
}
return u;
}
void AddNode(int v,char* s)
{
int n=strlen(s);
int i;
Node* u=root;
for(i=0;i<n;i++)
{
if('('==s[i])
{
break;
}
if('L'==s[i])
{
if(NULL==u->Left)
{
u->Left=