二叉树中和为某一值的路径
来源:互联网 发布:插补算法分类 编辑:程序博客网 时间:2024/06/11 22:06
题目描述
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。
路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
解题思路:
用先序遍历的方式访问到某一个结点时,我们把该结点添加到路径上,并累加该结点的值,
如果该结点为叶结点并且路径中的结点值的和刚好等于输入的整数,则该路径刚好符合要求,将其打印出来
如果不是叶结点则继续访问其子结点,访问结束时,递归函数将自动回到父结点。
我们在函数退出之前要在路径上删除当前结点并减去当前结点的值,以确保返回父结点的路径刚好是根结点到父结点的路径。
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。
路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
解题思路:
用先序遍历的方式访问到某一个结点时,我们把该结点添加到路径上,并累加该结点的值,
如果该结点为叶结点并且路径中的结点值的和刚好等于输入的整数,则该路径刚好符合要求,将其打印出来
如果不是叶结点则继续访问其子结点,访问结束时,递归函数将自动回到父结点。
我们在函数退出之前要在路径上删除当前结点并减去当前结点的值,以确保返回父结点的路径刚好是根结点到父结点的路径。
保存路径的数据结构为一个栈, 路径要与递归调用状态一致,递归的本质就是一个压栈和出栈的过程
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};class Solution { vector<vector<int>>Result;vector<int>temp; void DFSFind(TreeNode* node ,int Number){temp.push_back(node->val);if(Number - node->val==0&&!node->left&&!node->right)Result.push_back(temp);else{if(node->left)DFSFind(node->left,Number - node->val);if(node->right)DFSFind(node->right,Number - node->val);}temp.pop_back();}public: vector<vector<int> > FindPath(TreeNode* root,int expectNumber) { if(root)DFSFind(root,expectNumber);return Result; } }
0 0
- 【树】二叉树中和为某一值的路径
- 【树6】二叉树中和为某一值的路径
- 题目11:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的所有路径
- 题目1368:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 1368:二叉树中和为某一值的路径 @jobdu
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- Q25:二叉树中和为某一值的路径
- 剑指offer:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径(剑指offer25)
- 网页调用QQ聊天
- Object-C 学习笔记(IOS程序设计课程)01
- Eclipse设置svn忽略文件或文件夹(svn:ignore)
- JavaScript中的this关键字使用详解
- caffe cuda jetson tk1 errors 解决
- 二叉树中和为某一值的路径
- codeforces 732E. Sockets
- 分布式调度框架TBSchedule
- 使用golang快速开发微信公众平台(五):公众号支付
- 开始写博客
- 当当elastic-job开源项目
- jdbc---javaweb-day1
- 性能优化之工具篇
- HTML5(表单自动验证 语义化标签 ...)