struct tree
{
int x;
tree * l;
tree * r;
tree(int ox): x(ox), l(NULL), r(NULL)
{}
};
void generate(tree* T, vector<int>& v_path, vector<vector<int> >& v_res)
{
if (NULL == T)
{
return;
}
v_path.push_back(T->x);
if (NULL == T->l && NULL == T->r)
{
v_res.push_back(v_path);
v_path.pop_back();
return;
}
if (T->l)
{
generate(T->l, v_path, v_res);
}
if (T->r)
{
generate(T->r, v_path, v_res);
}
v_path.pop_back();
}