257. 二叉树的所有路径
思路
(递归)
1、从根结点出发,递归走所有的路径,并把路径的值记录下来
2、递归过程中
若左子树和右子树都为 null ,则返回记录的路径 path ;
若左子树不为 null ,则把左子树的值加入到路径中,递归到左子树;
若右子树不为 null ,则把右子树的值加入到路径中,递归到右子树;
c++代码
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
int res = 0, n = nums.size();
vector<int>f(n + 1);
for(int i = 0; i < n; i++){
f[i] = 1;
if(i && nums[i] > nums[i - 1])
f[i] = f[i - 1] + 1;
res = max(res, f[i]);
}
return res;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x),
left(left), right(right) {}
* };
*/
class Solution {
public:
vector<string> res;
vector<string> binaryTreePaths(TreeNode* root) {
dfs(root, "");
return res;
}
void dfs(TreeNode* root, string path){
if(!root) return ;
if(!root->left && !root->right){
res.push_back(path + to_string(root->val));
return ;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24