<p>似乎您正在尝试解决这个问题:<a href="https://leetcode.com/problems/binary-tree-paths/" rel="nofollow noreferrer">https://leetcode.com/problems/binary-tree-paths/</a>
<br/></p>
<p>在这里,您可以简单地开始使用dfs探索树,并在树中存储值,并维护从根到当前节点的所有值的向量。处理完该节点后,只需从该向量中移除当前节点处的值。当我们到达叶节点时,我们只需将向量中的值附加到我们的答案中。你知道吗</p>
<p>以下是在cpp中实现的代码供您参考:</p>
<pre><code>/**
* 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:
void solve(TreeNode* root, vector<int>&values, vector<string>&ans) {
if (root == NULL) return;
if (root->left == NULL && root->right == NULL) {
// leaf node
string str = "";
values.push_back(root->val);
str += ::to_string(values[0]);
for (int i = 1; i < values.size(); ++i) {
str += "->";
str += ::to_string(values[i]);
}
ans.push_back(str);
values.pop_back();
return;
}
values.push_back(root->val);
solve(root->left, values, ans);
solve(root->right, values, ans);
values.pop_back();
}
vector<string> binaryTreePaths(TreeNode* root) {
vector<int>values;
vector<string>ans;
solve(root,values,ans);
return ans;
}
};
</code></pre>