給一棵二叉樹,找出從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的所有路徑。
樣例
給出下面這棵二叉樹:
1
/ \
2 3
\
5
所有根到葉子的路徑為:
[
"1->2->5",
"1->3"
]
遞歸
講真我見到遞歸真的是害怕,也沒辦法講,這也是參考的別人的答案妓布,過兩天再讓我寫我可能就寫不出來了,這個(gè)看了看理解了一點(diǎn)點(diǎn)趾唱,就先放在這里吧姻报,也許寫的多了就懂了也不一定:
vector<string> binaryTreePaths(TreeNode* root)
{
vector<string> res;
if(!root)
return res;
binaryTreePathsCore(root,res,to_string(root->val));
return res;
}
void binaryTreePathsCore(TreeNode *root,vector<string> &vstring,string str)
{
if(root->left==NULL&&root->right==NULL)
{
vstring.push_back(str);
return;
}
if(root->left)
{
binaryTreePathsCore(root->left,vstring,str+"->"+to_string(root->left->val));
}
if(root->right)
{
binaryTreePathsCore(root->right,vstring,str+"->"+to_string(root->right->val));
}
}