void FindPath(int expectedKey)
{
int currentSum = 0;
std::vector<char> st;//这里只能用vector,如果用栈只能得到栈顶元素
FindPath(root,st,¤tSum,expectedKey);
}
temptytemplate<class Type>
void BinTree<Type>::FindPath(BinTreeNode<Type> *&pRoot,std::vector<char>&st,int *currentSum,int expectedSum)
{
BinTreeNode<Type>* p;
st.push_back(pRoot->m_value);
*currentSum +=(int)pRoot->m_value-48;
bool isleaf= (pRoot->LeftChild == NULL && pRoot->RightChild == NULL);
if(*currentSum == expectedSum && isleaf)//如果既是叶子节点又是值相等;
{
vector<char>::iterator iter= st.begin();
for(;iter != st.end();++iter)
cout << *iter<<” “;
currentSum = currentSum – *(iter-1);
}
else
{
if(pRoot->LeftChild != NULL)
FindPath(pRoot->LeftChild,st,currentSum,expectedSum);
if(pRoot->RightChild != NULL)
FindPath(pRoot->RightChild,st,currentSum,expectedSum);
st.pop_back();//在返回到父节点的时候需要删除这个结点;
}
}