博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程思路总结——递归
阅读量:7241 次
发布时间:2019-06-29

本文共 2092 字,大约阅读时间需要 6 分钟。

1. 二叉树中和为某一值的路径

路径:从树的根节点到叶子节点经过的节点形成的路径,例如途中(10,5,4),(10,5,7),(10,12)

满足和为22的路径有(10,5,7)、(10,12)

 

参考代码

void FindPath(TreeNode *root, vector
&vec, int cur, int aim){ if (root == NULL) return; vec.push_back(*root); cur += root->val; bool IsLeft = ((root->left == NULL) && (root->right == NULL)); if (cur == aim && IsLeft) { for (vector
::iterator beg = vec.begin(); beg != vec.end(); ++beg) cout << beg->val << " "; cout << endl; } if (root->left != NULL) FindPath(root->left, vec, cur, aim); if (root->right != NULL) FindPath(root->right, vec, cur, aim); vec.pop_back();}void FindPath(TreeNode *root, int aim){ if (root == NULL) return; vector
vec; FindPath(root, vec, 0, aim);}

测试

#include 
#include
using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int v) : val(v), left(NULL), right(NULL) {};};void FindPath(TreeNode *root, vector
&vec, int cur, int aim){ if (root == NULL) return; vec.push_back(*root); cur += root->val; bool IsLeft = ((root->left == NULL) && (root->right == NULL)); if (cur == aim && IsLeft) { for (vector
::iterator beg = vec.begin(); beg != vec.end(); ++beg) cout << beg->val << " "; cout << endl; } if (root->left != NULL) FindPath(root->left, vec, cur, aim); if (root->right != NULL) FindPath(root->right, vec, cur, aim); vec.pop_back();}void FindPath(TreeNode *root, int aim){ if (root == NULL) return; vector
vec; FindPath(root, vec, 0, aim);}int main(){ TreeNode *root = new TreeNode(10); TreeNode *p1 = new TreeNode(5); TreeNode *p2 = new TreeNode(12); TreeNode *p3 = new TreeNode(4); TreeNode *p4 = new TreeNode(7); root->left = p1; root->right = p2; p1->left = p3; p1->right = p4; FindPath(root, 22);}
View Code

 

转载地址:http://scybm.baihongyu.com/

你可能感兴趣的文章
深度了解git工具
查看>>
Integer cache -127 - 128
查看>>
如何拷贝一个wchar_t类型的字符串
查看>>
设计模式(观察者模式)
查看>>
对Promise中的resolve,reject,catch的理解
查看>>
NFS挂载异常 mount.nfs: Input/output error
查看>>
爬虫 Day03
查看>>
内存池的原理及实现
查看>>
phpqrcode生成动态二维码简单实例
查看>>
python-函数
查看>>
iOS的Mantle实战
查看>>
自动换行
查看>>
用例分析技术阅读笔记二
查看>>
Scrapy反爬
查看>>
(十三) 整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)
查看>>
回流焊温度
查看>>
python 3
查看>>
并行与缓存的一些理解
查看>>
ibatis 开发中的经验 (三)Struts+Spring+Ibatis 开发环境搭建
查看>>
20175313 张黎仙《Java程序设计》第十周学习总结
查看>>