LeetCode 257. 二叉樹的所有路徑(C++)
阿新 • • 發佈:2019-01-25
題目:
給定一個二叉樹,返回所有從根節點到葉子節點的路徑。
說明: 葉子節點是指沒有子節點的節點。
示例:
思路:
遞迴終止條件:到達葉子節點,即該節點的左右孩子均為空。
路徑的拼接:每個節點值 + -> + 左孩子的路徑/右孩子的路徑(左右均可能有多個路徑)
/**
* 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> res;
if(root == NULL)
return res;
if(root->left == NULL && root->right == NULL){ //root為葉子結點
res.push_back(to_string(root->val));
}
vector <string> leftS = binaryTreePaths(root->left);
for(int i = 0; i < leftS.size(); i ++)
res.push_back(to_string(root->val) + "->" + leftS[i]);
vector<string> rihgtS = binaryTreePaths(root->right);
for(int i = 0; i < rihgtS.size(); i ++)
res.push_back(to_string(root->val) + "->" + rihgtS[i]);
return res;
}
};