二叉树的路径和
来源:互联网 发布:c 高级编程第10版 编辑:程序博客网 时间:2024/06/05 02:30
一、问题描述
给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值
的路径。
一个有效的路径,指的是从根节点到叶节点的路径。
二、样例给定一个二叉树,和 目标值 = 5
:
1 / \ 2 4 / \ 2 3
返回:
[ [1, 2, 2], [1, 4]]
三、思路对每条路径进行加和,与给定的值相比,如果相等就加到向量中。
四、代码
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root the root of binary tree
* @param target an integer
* @return all valid paths
*/
vector<vector<int>> binaryTreePathSum(TreeNode *root, int target) {
vector<vector<int> >paths;
vector<int>path;
vector<int>::iterator it;
if(root==NULL){
return paths;
}
else {
def(root,paths,path,target);
return paths;
}
}
void def(TreeNode*root,vector<vector<int> >&ps,vector<int>p,int target){
p.push_back(root->val);
vector<int>::iterator itp;
if(root->left==NULL&&root->right==NULL){
int flag=0;
for(itp=p.begin();itp!=p.end();itp++){
flag+=*itp;
}
if(flag==target){
ps.push_back(p);
}
}
if(root->left!=NULL){
def(root->left,ps,p,target);
}
if(root->right!=NULL){
def(root->right,ps,p,target);
}
// Write your code here
}
};
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 二叉树的路径和
- 567. Permutation in String
- CPU的内部架构和工作原理
- bzoj 4872 [Shoi2017]分手是祝愿
- linux硬盘分区和挂载
- 面型对象程序设计与分析--ATM机用况图及分
- 二叉树的路径和
- APP开发实战168-APP快捷图标的功能设计
- poj 1062(nyoj 510) 昂贵的聘礼(dijkstra)
- Swift3 数组复制
- 在Ubuntu中使用apt-get的时候,始终显示“E:无法定位软件包”
- [论文阅读]Rank Pooling for Action Recognition
- 安卓中剥夺EditText焦点方法
- 神奇的网站Shodan(网站)
- 三道水题