您的位置:首页 > 编程语言

在二元树中找出和为某一值的所有路径的个人代码

2012-02-06 11:06 267 查看
题目:

输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如 输入整数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该层的数据
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vector 算法 null