题目:
给一棵二叉树,找出从根节点到叶子节点的所有路径。
样例
给出下面这棵二叉树:
1
/ \
2 3
\
5
所有根到叶子的路径为:
[
"1->2->5",
"1->3"
]
思路:
此题与二叉树的路径和差不多
通过遍历,将从根节点到叶子节点这条路径上的节点一次存入vector中,但要注意将int型转化为string 型
具体代码:
/*** Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root the root of the binary tree
* @return all root-to-leaf paths
*/
vector<string> vv;
string a;
void findpath(TreeNode *root,vector<string> &path) {
if(root==NULL) return;
if(root!=NULL) {
path.push_back(to_string(root->val));
if(root->left==NULL&&root->right==NULL) {
for( vector<string>::iterator it=path.begin();it!=path.end();it++) {
if(it==path.begin()) a=path[0];
else {
a=a+"->"+*it;
}
}
vv.push_back(a);
a="";
}
findpath(root->left,path);
findpath(root->right,path);
path.pop_back();
}
}
vector<string> binaryTreePaths(TreeNode* root) {
vector<string> path;
// Write your code here
if(root!=NULL) {
findpath(root,path);
}
return vv;
}
};
感想:
通过此题,第一次了解到了to_string,同时还学习到了如何向string型变量中添加元素。要注意是全局变量还是局部变量。