[leetcode_257]Binary Tree Paths

遍历二叉树的所有路径,搜索即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class Solution {
public:
    string convertIntToStr(int num)
    {
        char str[255];
        sprintf(str, "%d", num);
        return str;
    }

void binaryTreePath(TreeNode* node, string& path, vector<string>& paths)
{
    if (NULL == node)
    {
        return;
    }
    path += convertIntToStr(node->val);
    if (NULL != node->left)
    {
        string tmp = path;
        path += "->";
        binaryTreePath(node->left, path, paths);
        path = tmp;
    }
    if (NULL != node->right)
    {
            string tmp = path;
            path += "->";
            binaryTreePath(node->right, path, paths);
            path = tmp;
    }
    if (NULL == node->left && NULL == node->right)
    {
            paths.push_back(path);
    }
}

vector<string> binaryTreePaths(TreeNode* root) {
    vector<string> paths;
    paths.clear();

    string path = "";
    binaryTreePath(root, path, paths);

    return paths;
}
};
Licensed under CC BY-NC-SA 4.0