二叉树系列——路径系列:二叉树中和为某一值的路径
来源:互联网 发布:淘宝上的宝贝怎么上架 编辑:程序博客网 时间:2024/06/07 14:23
来自剑指offer 面试题25
题目:输入一棵二叉树,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶子节点所经过的节点形成一条路径。
之前讲了怎么求根节点到叶子节点的路径。所以对于这一个题,只需要稍微在之前的基础上改动一下就可以了!
看代码:
//打印路径void printPath(vector<int>&path){vector<int>::const_iterator iter = path.begin(); //打印出来for (; iter != path.end() - 1; ++iter)cout << *iter << "->";cout << *iter;cout << endl;//换行}void FindPath(BinaryTreeNode*pRoot, int nExpectedSum, std::vector<int> & path, int nCurrrentSum){if (pRoot==NULL){return;}nCurrrentSum += pRoot->m_nValue;path.push_back(pRoot->m_nValue);//到了叶节点并且路径节点的和等于输入的值,则打印这条路径if ((pRoot->m_pLeft==NULL&&pRoot->m_pRight==NULL)&&nCurrrentSum==nExpectedSum){printPath(path);}//不是叶节点则遍历其子节点if (pRoot->m_pLeft!=NULL){FindPath(pRoot->m_pLeft, nExpectedSum, path, nCurrrentSum);}if (pRoot->m_pRight!=NULL){FindPath(pRoot->m_pRight, nExpectedSum, path, nCurrrentSum);}//返回父节点之前,在路径上删除当前path.pop_back();}void FindPath(BinaryTreeNode*pRoot, int nExpectedSum){vector<int> path;int nCurrentSum = 0;//核心函数FindPath(pRoot, nExpectedSum, path, nCurrentSum);}
以下面的二叉树作为测试:
下面是测试代码:
//先序创建二叉树 void CreatBTree(BinaryTreeNode *&root){int nValue = 0;cin >> nValue;if (-1 == nValue){return;}else{root = new BinaryTreeNode();root->m_nValue = nValue;CreatBTree(root->m_pLeft);CreatBTree(root->m_pRight);}}int main(){BinaryTreeNode*T;cout << "先序构建二叉树:" << endl;CreatBTree(T);cout << "找到和为18的路径:" << endl;FindPath(T, 18);return 0;}
输出结果为:
1 0
- 二叉树系列——路径系列:二叉树中和为某一值的路径
- 剑—二叉树中和为某一值的路径
- 剑指offer系列源码-二叉树中和为某一值的路径
- 剑指Offer系列---(27)二叉树中和为某一值的路径
- 【剑指offer系列】 二叉树中和为某一值的路径___25
- 剑指offer系列-T25二叉树中和为某一值的路径
- 剑指Offer系列-面试题25:二叉树中和为某一值的路径
- 树——二叉树中和为某一值的路径and求二叉树深度
- 【树】二叉树中和为某一值的路径
- 【树6】二叉树中和为某一值的路径
- 题目11:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的所有路径
- 题目1368:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- BestCoder Round #65 B C D || HDU 5591 5592 5593
- Android中BroadcastReceiver组件详解
- SVN教程
- HDOJ 1078 FatMouse and Cheese 记忆化搜索模板
- 一个很捞的引导界面——代码分享+要点解析
- 二叉树系列——路径系列:二叉树中和为某一值的路径
- hdu1878
- CodeForces 148AInsomnia cure
- Hadoop集群(第6期)_WordCount运行详解
- mysql索引的类型和优缺点
- qt Qcompleter自动补全类
- 贪吃——1000 移动桌子
- ajax_之get请求方式(ajax验证用户名)
- Java学习笔记-对象与类