问一下有关二叉树的算法解决思路

问一下有关二叉树的算法
题目是这样的,一个人参加比赛,共有十题,如果答对了当前分加倍,如果答错了则扣当前题号的分数,弃权算答错,起始分是10分,答完他的分为100分,列出所有的可能,以答对表示为1,答错表示为0,类似1111100000这样的序号打印出来。

我写的二叉树算法是这样的

void t(int num,bool b,int score)
{
if(b) score*=2;
else score-=num;
num++;
if(num>10) 
{if(score==100)
 {//不会输出序列怎么写。。。}
 return;}
t(num,true,score);
t(num,false,score);
}

中间那段输出序列该怎么写啊?

------解决方案--------------------
这题当 扣完分数为0时,当前数加倍,一直会是0,这个地方,条件是怎么样的,分数为少于0吗?
------解决方案--------------------
#include<iostream>
using namespace std;

void t(int num,int b,int score,int a[])
{
if(b) 
{

score*=2;
a[num]=1;
}
else 
{

score-=num;
a[num]=0;
}
num=num+1;
if(num>10)
{
if(score==100)
{
for(int i=1;i<11;i++)
cout<<a[i];
cout<<"\n";
}
return;
}
t(num,1,score,a);
t(num,0,score,a);
}
int main()
{
int a[11];
int num=1;
int score=10;
int b=1;
t(1,1,score,a);
t(1,0,score,a);

cin>>b;

}
这样好像对了