Leetcode 257. Binary Tree Paths
257. Binary Tree Paths
- Total Accepted: 56430
- Total Submissions: 185972
- Difficulty: Easy
Given a binary tree, return all root-to-leaf paths.
For example, given the following binary tree:
1 / \ 2 3 \ 5
All root-to-leaf paths are:
["1->2->5", "1->3"]
思路:DFS。遇到叶节点就push_back。注意c++中,to_string()可以直接将int转化为string类型。
代码:
形式一:
1 class Solution { 2 public: 3 void binaryTreePaths(vector<string>& res,TreeNode* root,string str){ 4 if(!root) return; 5 str=str+to_string(root->val); 6 if(!root->left&&!root->right) res.push_back(str); 7 binaryTreePaths(res,root->left,str+"->"); 8 binaryTreePaths(res,root->right,str+"->"); 9 } 10 vector<string> binaryTreePaths(TreeNode* root) { 11 vector<string> res; 12 binaryTreePaths(res,root,""); 13 return res; 14 } 15 };
形式二:
1 class Solution { 2 public: 3 void binaryTreePaths(vector<string>& res,TreeNode* root,string str){ 4 if(!root->left&&!root->right) res.push_back(str); 5 if(root->left) binaryTreePaths(res,root->left,str+"->"+to_string(root->left->val)); 6 if(root->right) binaryTreePaths(res,root->right,str+"->"+to_string(root->right->val)); 7 } 8 vector<string> binaryTreePaths(TreeNode* root) { 9 vector<string> res; 10 if(root) binaryTreePaths(res,root,to_string(root->val)); 11 return res; 12 } 13 };