原标题:二叉树中和为某一个值的路径(C++版本)
原文来自:CSDN 原文链接:https://blog.csdn.net/xp178171640/article/details/103578674
使用二叉树的相关定义及函数在:二叉树最小结构(C++版本)
注意点:
找到的是从根节点到叶子节点的所有路径中满足条件的。
实现代码:
void PrintData(std::vector<int>& paths){
for (auto& curData : paths) std::cout << curData << " ";
std::cout << std::endl;}
void FindPath(BinaryTreeNode* pRoot, std::vector<int>& paths, int curData, int destData)
{
if (nullptr == pRoot) return;
curData += pRoot->data;
paths.push_back(pRoot->data);
// 当前节点是叶子节点才做出判断
if (nullptr == pRoot->pLeft && nullptr == pRoot->pRight)
{
if (curData == destData) PrintData(paths);
}
// 分别进入左子树和右子树
if (pRoot->pLeft != nullptr) FindPath(pRoot->pLeft, paths, curData, destData);
if (pRoot->pRight != nullptr) FindPath(pRoot->pRight, paths, curData, destData);
curData -= pRoot->data;
paths.pop_back();
}
void FindPath(BinaryTreeNode* pRoot, int destData)
{
if (nullptr == pRoot) return;
std::vector<int> paths;
FindPath(pRoot, paths, 0, destData);
}
免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。
合作及投稿邮箱:E-mail:editor@tusaishared.com