2020 年秋招百度二面被问到这个题,以前做过,所以顺利就写下来了。
//定义树的数据结构
struct TreeNode {
int value;
TreeNode* left;
TreeNode* right;
TreeNode(int val) : value(val), left(NULL), right(NULL) {}
};
class BinaryTreePath {
public:
vector<string> binaryTreePath(TreeNode * root) {
vector<string> res;
if(root == NULL)
return res;
//如果是根节点,则直接 push 进去
if (root->left == NULL && root->right == NULL) {
res.push_back( to_string(root->value) );
return res;
}
//递归调用左子树
vector<string> leftS = binaryTreePath(root->left);
for (int i = 0; i < leftS.size(); i++)
{
res.push_back( to_string(root->value) + "->" + leftS[i] );
}
//递归调用右子树
vector<string> rightS = binaryTreePath(root->right);
for (int i = 0; i < rightS.size(); i++)
{
res.push_back( to_string(root->value) + "->" + rightS[i] );
}
return res;
}
};