代码解决
/*** 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 {// 辅助递归函数,生成从根节点到叶节点的路径void traversal(TreeNode* root, string path, vector<string>& result) {// 将当前节点的值添加到路径中path += to_string(root->val);// 如果当前节点是叶节点,添加路径到结果中if (root->left == nullptr && root->right == nullptr) {result.push_back(path);return;}// 处理左子树if (root->left) {path += "->"; // 添加箭头到路径traversal(root->left, path, result);path.pop_back(); // 移除箭头的最后一个字符 '-'path.pop_back(); // 移除箭头的最后一个字符 '>'}// 处理右子树if (root->right) {path += "->"; // 添加箭头到路径traversal(root->right, path, result);path.pop_back(); // 移除箭头的最后一个字符 '-'path.pop_back(); // 移除箭头的最后一个字符 '>'}}public:// 主函数,生成二叉树所有从根节点到叶节点的路径vector<string> binaryTreePaths(TreeNode* root) {vector<string> result; // 保存所有路径的结果string path; // 保存当前路径if (root == nullptr) return result; // 如果树为空,返回空结果traversal(root, path, result); // 调用辅助递归函数return result; // 返回所有路径} };
TreeNode 结构体定义:
val
:节点的整数值。left
:指向左子节点的指针。right
:指向右子节点的指针。Solution 类:
- 包含一个辅助递归函数
traversal
和一个主函数binaryTreePaths
。traversal 方法:
- 递归生成从根节点到叶节点的路径。
- 将当前节点的值添加到路径中。
- 如果当前节点是叶节点,将路径添加到结果集中。
- 递归处理左子树和右子树,分别添加箭头到路径中,并在递归结束后移除箭头。
binaryTreePaths 方法:
- 主函数,调用辅助递归函数生成所有路径。
- 如果树为空,返回空的结果集。
- 返回包含所有路径的结果集。