题目:
输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如 输入整数22和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条路径:10, 12和10, 5, 7。
content: 保存节点路径
// 该算法运用了二叉树后序算法
void findpath(BSTreeNode* proot, int &thissum, std::vector<int>& content)
{
if (proot == NULL)
return;
thissum += proot->m_value;
content.push_back(proot->m_value);
findpath(proot->m_pleft, thissum, content);
findpath(proot->m_pright, thissum, content);
if (thissum == DEFINE_NUMBER)
{
// print the vector content
}
thissum -= proot->m_value; //返回上层减去该层的数据
content.pop_back(); //remove该层的数据
}