<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 一.題目描述 Given a binary tree and a sum, find all root-to-leaf paths where each path’s sum equals the given sum. For example:? Given the below binary tree and?`sum = 22`, ~~~ 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1 ~~~ return ~~~ [ [5,4,11,2], [5,8,4,5] ] ~~~ ## 二.題目分析 這道題與Path Sum類似,不同的是這道題要求找到所有和等于給定值的路徑,必須遍歷完所有的路徑。在找到滿足的路徑之后,不能直接返回,而是將其添加到一個`vector<vector<int>>`中。在查找的過程中,每經過一個結點,先使用一個`vector<int>`將該路徑中的所有結點記錄下來。需要注意的是,在進入每一個結點的時候,先將該結點的值`push`到`vector`中,在退出時將該結點的值`pop`出來,這樣就可以避免有時會忘記`pop`結點的值的情況。 該方法的時間復雜度為O(n),空間復雜度為O(logn)。 ## 三.示例代碼 ~~~ struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; class Solution { public: vector<vector<int>> pathSum(TreeNode* root, int sum) { vector<vector<int> > Result; vector<int> TmpResult; pathSum(root, sum, Result, TmpResult); return Result; } private: void pathSum(TreeNode* root, int sum, vector<vector<int> > &Result, vector<int> &TmpResult) { if (!root) return; if (!root->left && !root->right && root->val == sum) { TmpResult.push_back(sum); Result.push_back(TmpResult); // pop the leaf node TmpResult.pop_back(); return; } int SumChild = sum - root->val; TmpResult.push_back(root->val); pathSum(root->left, SumChild, Result, TmpResult); pathSum(root->right, SumChild, Result, TmpResult); TmpResult.pop_back(); } }; ~~~ ## 四.小結 與Path Sum一樣,用DFS解決。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看