257. Binary Tree Paths

思路:
DFS递归即可,这里要多关注的是数字和"->"的关系。
因为我们"->"是在添加数字后加,所以我们多一个判断如果当前加入的是叶子节点,再加入val后,就把这一串字符串加入到res数组中,并return。这样就能避免最后多一个“->”。
代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
   void dfs(TreeNode* root,string now,vector<string>& res){
       if(root==nullptr) return;
        now += to_string(root->val);
        if(!root->left&&!root->right){ 
            res.push_back(now);
            return;
        }
        dfs(root->left,now+"->",res);
        dfs(root->right,now+"->",res);
        return ;
    }
    vector<string> binaryTreePaths(TreeNode* root) {
        vector<string> res;
        dfs(root,"",res);
        return res;
    }
};
posted @ 2021-04-27 23:49  Mrsdwang  阅读(31)  评论(0编辑  收藏  举报