/**
* 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:
void search(TreeNode *t, vector<string> &ans, string s)
{
if (t == NULL) return;
s += to_string(t->val);
if (t->left == NULL && t->right == NULL)
{
ans.push_back(s);
return;
}
if (t->left != NULL)
{
s += "->";
search(t->left, ans, s);
while (s[s.size() - 1] != '>')
{
s.pop_back();
}
s.pop_back();
s.pop_back();
}
if (t->right != NULL)
{
s += "->";
search(t->right, ans, s);
while (s[s.size() - 1] != '>')
{
s.pop_back();
}
s.pop_back();
s.pop_back();
}
}
vector<string> binaryTreePaths(TreeNode* root) {
vector<string> ans;
string s;
search(root, ans, s);
return ans;
}
};
昨天刚学了一点树的知识今天就用到了嘿嘿
原来前中后序遍历只是dfs的三种不同策略_(:з」∠)_
需要注意的地方:
1、vector需要穿地址给函数,string不用
2、int转string可以用to_string函数,string转int才能 - ‘0’
3、搜左边和右边的时候写的有点啰嗦了,但是还蛮快的_(:з」∠)_