面试题25:二叉树中和为某一值的路径
来源:互联网 发布:淘宝网李宁 编辑:程序博客网 时间:2024/05/16 06:19
题目:输入一棵二叉树和一个整数。打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点成为一条路径。
这题开始用堆栈来做,我也不知道自己写的什么鬼。后来还是用递归来做,代码如下:
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};class Solution {public: vector<vector<int> > FindPath(TreeNode* root,int expectNumber) { vector<int> numVect; vector<vector<int> > vectSet; if(root==NULL) return vectSet; FindPath(root,expectNumber,numVect,vectSet); return vectSet; } void FindPath(TreeNode* root,int expectNumber,vector<int> &numVect,vector<vector<int> > &vectSet) { TreeNode *curNode=root; if(curNode->left==NULL&&curNode->right==NULL) { if(curNode->val==expectNumber) { numVect.push_back(curNode->val); vectSet.push_back(numVect); numVect.pop_back(); return; } } else { numVect.push_back(curNode->val); if(curNode->left) FindPath(root->left,expectNumber-curNode->val,numVect,vectSet); if(curNode->right) FindPath(root->right,expectNumber-curNode->val,numVect,vectSet); numVect.pop_back(); } }};同时将原来用stack写的代码记录下,注意,该代码是错误的,但是我不会修改,先记录下,哪位大神路过教修改下。
class Solution {public: vector<vector<int> > FindPath(TreeNode* root,int expectNumber) { vector<int> numVect; vector<vector<int> > vectSet; if(root==NULL) return vectSet; TreeNode *curNode=root; stack<TreeNode *> nodeStack; nodeStack.push(curNode); while(!nodeStack.empty()) { curNode=nodeStack.top(); nodeStack.pop(); if(curNode->left==NULL&&curNode->right==NULL) { if(curNode->val==expectNumber) { numVect.push_back(curNode->val); vectSet.push_back(numVect); numVect.pop_back(); } } else { numVect.push_back(curNode->val); expectNumber-=curNode->val; if(curNode->right) nodeStack.push(curNode->right); if(curNode->left) nodeStack.push(curNode->left); // expectNumber+=curNode->val; // numVect.pop_back(); } } return vectSet; }};
0 0
- 面试题25:二叉树中和为某一值得路径
- 面试题25:二叉树中和为某一值的路径
- 面试题25:二叉树中和为某一值的路径
- 【剑指offer】面试题25:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径(面试题 25)
- 剑指Offer:面试题25 二叉树中和为某一值的路径
- 面试题25 二叉树中和为某一值的路径
- 剑指offer 面试题25 求二叉树中和为某一路径的值
- 《剑指Offer》面试题25:二叉树中和为某一值的路径
- 剑指offer 面试题25—二叉树中和为某一值的路径
- 面试题25:二叉树中和为某一值的路径
- 剑指offer--面试题25:二叉树中和为某一值的路径--Java实现
- 面试题25二叉树中和为某一值的路径
- 【剑指Offer学习】【面试题25:二叉树中和为某一值的路径】
- 面试题25_二叉树中和为某一值的路径
- 剑指Offer面试题25(Java版):二叉树中和为某一值的路径
- 剑指offer_面试题25_二叉树中和为某一值的路径
- 剑指offer面试题25-二叉树中和为某一值的路径
- 事件处理机制之监听EditText的内容变化
- Python 语言及其应用 Chapter_4_Note_4 装饰器
- linux简单几个小命令
- elasticsearch Java
- linux进程及进程查看ps命令
- 面试题25:二叉树中和为某一值的路径
- 共享一个右侧滑出的自动消失的提示框
- 事件处理机制之监听EditText的内容变化
- springmvc的Controller并发
- 关于建站和域名的杂谈
- 141. Linked List Cycle
- SQL Server 对XML数据功能支持
- h5+css 水平菜单制作
- 【bzoj2055】【80人环游世界】【有上下界的费用流】