首页 > 其他 > 详细

打印二叉树中和为某一值的路径

时间:2014-05-06 14:36:38      阅读:382      评论:0      收藏:0      [点我收藏+]

输入一个二叉树,查找该树的所有路径(从根结点到叶结点的通路),并返回和(路径上所有结点值的和)为某一指定值的路径。

bubuko.com,布布扣
 1 /////////////二叉树中和为某一值的路径/////////////////////
 2 void FindPath(BinaryTreeNode* pRoot ,int expectedSum ,vector<int>& path ,int currentSum)
 3 {
 4     if (pRoot == NULL)
 5     {
 6         return;
 7     }
 8     currentSum += pRoot->m_nValue;
 9     path.push_back(pRoot->m_nValue);
10     //如果是叶子结点,且结点的和等于希望的值,打印出这条路径
11     if (currentSum == expectedSum && pRoot->m_pLeft == NULL && pRoot->m_pRight == NULL)
12     {
13         cout<<"Find a path : ";
14         vector<int>::iterator iter = path.begin();
15         for (;iter != path.end() ; iter++)
16         {
17             cout<<*iter<<" ";
18         }
19         cout<<endl;
20     }
21     if (pRoot->m_pLeft)
22     {
23         FindPath(pRoot->m_pLeft ,expectedSum ,path ,currentSum);
24     }
25     if (pRoot->m_pRight)
26     {
27         FindPath(pRoot->m_pRight ,expectedSum ,path ,currentSum);
28     }
29     //currentSum = currentSum - path.back();
30     path.pop_back();
31 }
32 void FindPath(BinaryTreeNode* pRoot , int expectedSum)//用户接口
33 {
34     if (pRoot == NULL)
35     {
36         return;
37     }
38     int currentSum = 0 ;
39     vector<int> vec ;
40     FindPath(pRoot ,expectedSum ,vec , currentSum );
41 
42 }
bubuko.com,布布扣

 

打印二叉树中和为某一值的路径,布布扣,bubuko.com

打印二叉树中和为某一值的路径

原文:http://www.cnblogs.com/csxcode/p/3710368.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!