首页 > 其他分享 >剑指offer:二叉树中和为某一值的路径

剑指offer:二叉树中和为某一值的路径

时间:2022-12-01 19:02:36浏览次数:50  
标签:right TreeNode offer int sum 二叉树 path root 一值


题目描述

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int> > pathSum(TreeNode* root, int sum) {
if (root == NULL){
return res;
}
vector<int> path;
helper(root, sum, path, 0);
return res;
}
private:
void helper(TreeNode* root, int sum, vector<int>& path, int cur){
cur += root->val;
path.push_back(root->val);
if (root->left == NULL&&root->right == NULL){
if (cur == sum){
res.push_back(path);
//return;//不能要,后面要pop_back
}
}
if (root->left){
helper(root->left, sum, path, cur);
}
if (root->right){
helper(root->right, sum, path, cur);
}
path.pop_back();
}
vector<vector<int> >res;
};


标签:right,TreeNode,offer,int,sum,二叉树,path,root,一值
From: https://blog.51cto.com/u_15899184/5903620

相关文章

  • 剑指offer:数组中出现次数超过一半的数字
    题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因......
  • 剑指offer:复杂链表的复制
    题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。/*structRandomListNode{intlabel;structRandom......
  • 剑指offer:数组中的逆序对
    题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。classSolution{public:intInv......
  • 剑指offer:最小的K个数
    题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。方法一O(n)改变输入,适合小数据classSolution{public:vector<i......
  • 剑指offer:翻转单词顺序列
    题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“s......
  • 二叉树前序遍历(python)
    具体做法:step1:准备数组用来记录遍历到的节点值,Java可以用List,C++可以直接用vector。step2:从根节点开始进入递归,遇到空节点就返回,否则将该节点值加入数组。step3:依次......
  • 二叉树中序遍历(python)
    def inorder(self, list: List[int], root: TreeNode):        # 遇到空节点则返回        if not root:            return ......
  • 判断是不是完全二叉树
      图1,图2是完全二叉树 图3不是完全二叉树  import java.util.*;/* * public class TreeNode { *   int val = 0; *   TreeNode lef......
  • leetcode二叉树遍历
    #include<stdio.h>#include<string.h>#include<iostream>#include<vector>#include<queue>structTreeNode{intval;TreeNode*left;TreeNode*right;......
  • 剑指offer题解C++版
    一,常见数据结构1,数组3-找出数组中重复的数字4-二维数组中的查找5-替换空格29-顺时针打印矩阵leetcode989-数组形式的整数加法leetcode26-删除有序数组中的重复......