二叉树中和为某一值的路径

来源:互联网 发布:js 判断对象类型 兼容 编辑:程序博客网 时间:2024/06/05 17:10

//二叉树中和为某一值的路径
void FindPath(BtNode* pRoot,int expectedSum,vector& path,int currentSum)
{
currentSum += pRoot->m_val;
path.push_back(pRoot->m_val);

//如果是叶节点,并且路径上的点和等于输入的值//打印这条路径bool isLeaf = pRoot->m_pleft==NULL && pRoot->m_pright==NULL;if(currentSum == expectedSum && isLeaf){    cout<<"A path is found: ";    vector<int>::iterator it = path.begin();    for(;it!=path.end();++it)    {        cout<<*it<<" ";    }    cout<<endl;    if(pRoot->m_pleft)        FindPath(pRoot->m_pleft,expectedSum,path,currentSum);    if(pRoot->m_pright)        FindPath(pRoot->m_pright,expectedSum,path,currentSum);}//再返回到父节点之前,在路径上删除当前结点//在currentSum中减去当前的结点的值currentSum -= pRoot->m_val;path.pop_back();

}

void FindPath(BtNode* pRoot,int expectedSum)
{
if(pRoot == NULL)
return;
vector path;
int currentSum = 0;
FindPath(pRoot,expectedSum,path,currentSum);
}

原创粉丝点击