这个概念大家都懂,直接上代码
bool GetThePathOfNode(BTNode* pRoot, int nData, std::deque<BTNode*>& myDeque)
{
if (NULL == pRoot)
return false;
if (pRoot->nData == nData)
{
myDeque.push_back(pRoot);
return true;
}
myDeque.push_back(pRoot);
if (GetThePathOfNode(pRoot->pLeft, nData, myDeque))
return true;
if (GetThePathOfNode(pRoot->pRight, nData, myDeque))
return true;
myDeque.pop_back();
return false;
}
void GetThePathOfNode(BTNode* pRoot, int nData)
{
if (NULL == pRoot)
{
std::cout << "Tree Is Empty!" << std::endl;
return;
}
std::deque<BTNode*> myDeque;
GetThePathOfNode(pRoot, nData, myDeque);
if (myDeque.empty())
{
std::cout << "Not Find The Node!" << std::endl;
return;
}
std::cout << "The Path is : ";
while (!myDeque.empty())
{
std::cout << myDeque.front()->nData << " ";
myDeque.pop_front();
}
std::cout << std::endl;
}
上面中使用std::deque而不使用std::stack,
是因为deque可以从根节点开始输出,到目标节点截止。
而stack却只能从进行反向输出。