题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径(必须为根到叶节点的路径)。
例如输入整数22和如下二元树
10
/ \
5 12
/ \ / \
4 7 11 14
则打印出一条路径:10, 5, 7。
void pathSumOfK_rTol(BiTree T,int k,vector<int>&path)
{
if (T)
{
path.push_back(T->data);
if (T->lchild==NULL && T->rchild==NULL)
{
if(T->data==k)
{
for(vector<int>::size_type ix = 0; ix < path.size()-1;ix++)
{
cout<<path[ix]<<",";
}
cout<<path[path.size()-1]<<endl;
}
path.pop_back(); //该节点处理完,从容器中删除
}
else
{
pathSumOfK(T->lchild,k-T->data,path);
pathSumOfK(T->rchild,k-T->data,path);
path.pop_back();
}
}
}