DFS:257. Binary Tree Paths

来源:互联网 发布:求暖床软件怎么样 编辑:程序博客网 时间:2024/06/14 03:09

第一个dfs题:

/** * 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:    vector<string> binaryTreePaths(TreeNode* root) {        vector<string> result;        string s = "";        path(root, s, result);        return result;    }    void path(TreeNode* root, string s, vector<string> &result)    {    if(root == NULL)    return;        s += to_string(root->val);        if(root->left == NULL && root->right == NULL)        {            result.push_back(s);            return;        }        if(root->left != NULL)        {        path(root->left, s + "->", result);        }        if(root->right != NULL)        {        path(root->right, s + "->", result);        }        return;    }};

看别人的思路会不会清楚一点:

如果左子树为空且右子树为空,加入结果集合中。否则遍历左子树和右子树

class Solution {public:    vector<string> binaryTreePaths(TreeNode* root) {        vector<string> res;        if (root) dfs(root, "", res);        return res;    }    void dfs(TreeNode *root, string out, vector<string> &res) {        out += to_string(root->val);        if (!root->left && !root->right) res.push_back(out);        else {            if (root->left) dfs(root->left, out + "->", res);            if (root->right) dfs(root->right, out + "->", res);        }    }};


原创粉丝点击