首页 » 编程之美 » 正文

[leetcode_257]Binary Tree Paths

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

class Solution {
public:
    string convertIntToStr(int num)
    {
        char str[255];
        sprintf(str, "%d", num);
        return str;
    }</p>

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

vector&amp;lt;string&amp;gt; binaryTreePaths(TreeNode* root) {
    vector&amp;lt;string&amp;gt; paths;
    paths.clear();

    string path = &amp;quot;&amp;quot;;
    binaryTreePath(root, path, paths);

    return paths;
}
</code></pre>

<p>};

发表评论