二叉树的所有路径
给你一个二叉树的根节点 root,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
示例 1:
输入:root = [1,2,3,null,5] 输出:["1->2->5","1->3"]
示例 2:
输入:root = [1] 输出:["1"]
提示:
- 树中节点的数目在范围 [1, 100] 内
- -100 <= Node.val <= 100
我的代码:
/** * 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 construct_paths(TreeNode* root, string path, vector<string>& paths) { if (root != NULL) { path += to_string(root->val); if (root->left == NULL && root->right == NULL) { // 当走到没有路的时候 paths.push_back(path); } else { // 还有路可以走 path += "->"; construct_paths(root->left, path, paths); construct_paths(root->right, path, paths); } } } public: vector<string> binaryTreePaths(TreeNode* root) { vector<string> paths; construct_paths(root, "", paths); return paths; } };