问题分析:
Given a binary tree, return all root-to-leaf paths.
示例:
given the following binary tree:
1 / \ 2 3 \ 5
All root-to-leaf paths are:
["1->2->5", "1->3"]问题分析:
这里涉及到将整数转换为字符串的问题,还好新版的c++添加了to_string函数,方便了我们的转换,也可以用stringstream来做.
本题还是主要用DFS递归求解树的路径
过程详见代码:
/**
* 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:
vector<string> binaryTreePaths(TreeNode* root) {
vector<string> v;
string path = "";
findPaths(root,v,path);
return v;
}
void findPaths(TreeNode* root,vector<string>& v,string path)
{
if(root == NULL) return;
stringstream ss;
ss << root->val;
path = path + ss.str();
// 判断是否为叶子结点
if(root->left == NULL && root->right == NULL)
{
v.push_back(path);
}
string tpath =path;
if(root->left != NULL)
{
path = path + "->";
findPaths(root->left,v,path);
}
if(root->right != NULL)
{
tpath = tpath + "->";
findPaths(root->right,v,tpath);
}
}
};