二叉树中和为某一值的路径
2015-08-04 12:40
134 查看
void FindPath(BinaryTreeNode *pRoot, int expectedSum) { if (pRoot == NULL) return; std::vector<int> path; int currentSum = 0; FindPath(pRoot, expectedSum, path, currentSum); } void FindPath(BinaryTreeNode *pRoot, int expectedSum, std::vector<int> &path, int ¤tSum) { currentSum += pRoot->data; path.push_back(pRoot->data); // 如果是叶子结点,并且路径上结点的和等于输入的值,那么打印出这条路径 bool isLeaf = pRoot->lchild == NULL && pRoot->rchild==NULL; if (currentSum == expectedSum && isLeaf) { printf("A path is found: "); std::vector<int>::iterator iter = path.begin(); for (; iter != path.end(); ++iter); printf("%d\t", *iter); printf("\n"); } // 如果不是叶子结点,则遍历它的子结点 if (pRoot->lchild != NULL) FindPath(pRoot->lchild, expectedSum, path, currentSum); if (pRoot->rchild != NULL) FindPath(pRoot->rchild, expectedSum, path, currentSum); // 在返回父节点之前,在路径上删除当前结点,并在currentSum中减去当前结点的值 currentSum -= pRoot->data; path.pop_back(); }
相关文章推荐
- 「深入 Exchange 2013」18 队列 part3
- JRE System Library [jdk1.7]和Server Library [Apache Tomcat v6.0]未绑定错误解决方案
- NYOJ 283 对称排序
- DAVE SDK 4.1.2 Help content (翻译)——manifest 结构
- Rank of Tetris
- LeetCode(90) Subsets II
- c 函数模块
- c/c++ sizeof总结
- windows下如何找到某个软件的安装目录
- 玲珑杯Unity开发心得——欢迎界面淡出并且转场景
- BZOJ 2440 完全平方数 (容斥+莫比乌斯反演+二分)
- WPF 实现阴影效果(推酷网)
- 循环型的除法器(实现两个8位整数的除法)
- CC2640 串口和按键中断冲突
- Java_Web三大框架之Hibernate操作数据库(三)
- Win7 64位系统 php运行出现undefined function curl_init()解决方法
- Algorithms—116.Populating Next Right Pointers in Each Node
- MapReduce 的进一步了解(一)
- Android ButterKnife Zelezny
- UART(串口发送模块)