遍历二叉树的所有路径,搜索即可。
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; path, vector&lt;string&gt;&amp; paths) { if (NULL == node) { return; } path += convertIntToStr(node-&gt;val); if (NULL != node-&gt;left) { string tmp = path; path += &quot;-&gt;&quot;; binaryTreePath(node-&gt;left, path, paths); path = tmp; } if (NULL != node-&gt;right) { string tmp = path; path += &quot;-&gt;&quot;; binaryTreePath(node-&gt;right, path, paths); path = tmp; } if (NULL == node-&gt;left &amp;&amp; NULL == node-&gt;right) { paths.push_back(path); } } vector&lt;string&gt; binaryTreePaths(TreeNode* root) { vector&lt;string&gt; paths; paths.clear(); string path = &quot;&quot;; binaryTreePath(root, path, paths); return paths; } </code></pre> <p>};