题目
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”]
代码
class Solution {
public:
vector<string> binaryTreePaths(TreeNode* root) {
road.clear();
answers.clear();
preOrder(root);
return answers;
}
private:
vector<int> road;
vector<string> answers;
void preOrder(TreeNode * root) {
if (!root) return;
road.push_back(root->val);
if (root->left) preOrder(root->left);
if (root->right) preOrder(root->right);
if (!root->left && !root->right) {
string answer = "";
for (int i = 0; i < road.size(); i++) {
if (i > 0) answer += "->";
answer += intToString(road[i]);
}
if (answer != "") answers.push_back(answer);
}
road.pop_back();
}
string intToString(int i) {
string answer = "";
bool negative = i < 0;
if (negative) i = -i;
do {
answer += i % 10 + '0';
i /= 10;
} while (i);
reverse(answer.begin(), answer.end());
return negative ? "-" + answer : answer;
}
};