您的位置:首页 > 其它

二叉树中获取从根节点到某个节点的路径

2015-10-17 21:55 274 查看
这个概念大家都懂,直接上代码

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却只能从进行反向输出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息