113. Path Sum II 这里要注意 引用 和 传值的区别,见注释
来源:互联网 发布:数据库安全管理办法 编辑:程序博客网 时间:2024/06/15 19:13
题目:
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:Given the below binary tree and
sum = 22
,5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1
return
[ [5,4,11,2], [5,8,4,5]]代码和思路:
vector<vector<int>> pathSum(TreeNode* root, int sum) { vector<int> fa; vector<vector<int>> ans; help(root, sum, fa, ans ); return ans; }下面是传值:
void help(TreeNode* root, int sum, vector<int> &father, vector<vector<int>>& ans) { if(root == NULL) return ; vector<int> temp(father); temp.push_back(root->val); if(root->left == NULL && root->right == NULL){ if(root->val == sum){ ans.push_back(temp); } return ; } help(root->left, sum - root->val, temp, ans); help(root->right, sum - root->val, temp, ans); }相当于:
void help(TreeNode* root, int sum, vector<int> father, vector<vector<int>>& ans) { if(root == NULL) return ; /*vector<int> temp(father); temp.push_back(root->val);*/ father.push_back(root->val); if(root->left == NULL && root->right == NULL){ if(root->val == sum){ ans.push_back(father); } return ; } help(root->left, sum - root->val, father, ans); help(root->right, sum - root->val, father, ans); }而对于引用传递的话一定要进行pop操作,注意体会:这里就是回溯法
void help(TreeNode* root, int sum, vector<int> &father, vector<vector<int>>& ans) { if(root == NULL) return ; father.push_back(root->val); if(root->left == NULL && root->right == NULL){ if(root->val == sum){ ans.push_back(father); } //return ;这里return一定要去掉 注意体会 因为在下面两个help中若找不到(没有root->val == sum)那么就要pop_back.就是一种回溯法 } help(root->left, sum - root->val, father, ans); help(root->right, sum - root->val, father, ans); father.pop_back(); }
最后一个help只要9msAC,说明引用传递效率要高。
0 0
- 113. Path Sum II 这里要注意 引用 和 传值的区别,见注释
- leetcode 113. Path Sum II 二叉树求符合和值为sum的链
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 友盟推送集成的常见问题
- Android 版本检测、文件下载并更新
- 2016/11/30
- BZOJ 3940 AC自动机
- 【Python机器学习】梯度下降法(三) 优矿(uqer.io)
- 113. Path Sum II 这里要注意 引用 和 传值的区别,见注释
- 网络请求runloop
- Two Day(2)---运算符
- R语言实战笔记--第一章 R的安装配置及使用
- JAVA实现打印机打印字符串
- Gradle入门
- Google Analytics中analytics.js的使用
- JDK从1.7换成1.6之后,CMD查看仍是1.7
- eclipse经常卡死的解决方法总结