二叉树按值查找路径

void FindPath(int expectedKey)

{

int currentSum = 0;

std::vector<char> st;//这里只能用vector,如果用栈只能得到栈顶元素

FindPath(root,st,&currentSum,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();//在返回到父节点的时候需要删除这个结点;

 }

  

}

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/lxn18392641463/article/details/68952257
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞