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”]
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
本题类似于112,113path sum还是求路径的问题,同样还是dfs的思想,只是注意字符串打印出的技巧。同129. Sum Root to Leaf Numbers也有点像,可以利用非递归的方法进行求解。
递归的代码:
void binaryTreePaths(TreeNode* root,vector<string> &vec, string str)
{
if(root->left == NULL && root->right == NULL)
{
vec.push_back(str);
}
if(root->left != NULL)
{
binaryTreePaths(root->left,vec,str + "->" + to_string(root->left->val));
}
if(root->right != NULL)
{
binaryTreePaths(root->right,vec,str + "->" + to_string(root->right->val));
}
}
vector<string> binaryTreePaths(TreeNode* root) {
vector<string> vec;
if(root == NULL)
return vec;
binaryTreePaths(root,vec,to_string(root->val));
return vec;
}