原题地址(简单)

方法1—深度优先搜索

思路

此题是比较简单的关于二叉树的题目,运用深搜即可解决。
需要注意的是结点的值有可能>10,也有可能是0,也有可能是负数。

代码

  1. class Solution {
  2. public:
  3. vector<string> ans;
  4. void dfs(string path, TreeNode* root){
  5. if(!root->left && !root->right){
  6. ans.push_back(path);
  7. return;
  8. }
  9. if(root->left) dfs(path+"->"+to_string(root->left->val), root->left);
  10. if(root->right) dfs(path+"->"+to_string(root->right->val), root->right);
  11. }
  12. vector<string> binaryTreePaths(TreeNode* root) {
  13. if(!root) return {};
  14. string path = to_string(root->val);
  15. dfs(path, root);
  16. return ans;
  17. }
  18. };

时空复杂度

摘自官方题解

image.png

方法2—广度优先搜索

思路

代码

时空复杂度