LeetCode 257 Binary Tree Paths

请看题

给一个二叉树结构的节点,要求输出内容为

要求返回值为一个vector。

开始做题

先来看第二个Example。

一个树中只有一个节点,那么我们可以进行if判断来返回其节点,代码可为

1
2
3
4
if(!node->left && !node->right)
{
ans.push_back(path);
}

想要理解代码,那就得先知道代码长什么样,此处为主函数用作解答

1
2
3
4
5
6
vector<string> binaryTreePaths(TreeNode* root) 
{
vector<string> ans;
dfs(ans, "", root);
return ans;
}

那么已经解决了Example 2 在上面的if,我们就可以进行针对其他的情况来进行解答了。

二叉树,无非就是递归,递归左节点,递归右节点,这里也是一样,在使用递归后,获取每一个节点的值,将其转为string然后push到vector中,当没有可以递归的节点后那么也就是该结束的时候,贴上递归结束条件代码

1
2
3
4
if(!node)
{
return;
}

以上if和node != nullptr 等价

然后就是使用递归

1
2
dfs(ans, path+"->", node->left);
dfs(ans, path+"->", node->right);

最后结束。

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* 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:

void dfs(vector<string> &ans, string path ,TreeNode *node)
{
if(!node)
{
return;
}
path += to_string(node->val);
if(!node->left && !node->right)
{
ans.push_back(path);
}
dfs(ans, path+"->", node->left);
dfs(ans, path+"->", node->right);
}
vector<string> binaryTreePaths(TreeNode* root)
{
vector<string> ans;

dfs(ans, "", root);
return ans;
}
};

LeetCode 257 Binary Tree Paths
http://example.com/2024/05/09/LeetCode 257 Binary Tree Paths/
作者
OneWhiteThree
发布于
2024年5月9日
许可协议