劍指Offer-二叉樹中和為某一值的路徑

題目描述 [二叉樹中和為某一值的路徑]

輸入一顆二叉樹的跟節(jié)點(diǎn)和一個(gè)整數(shù),打印出二叉樹中結(jié)點(diǎn)值的和為輸入整數(shù)的所有路徑。路徑定義為從樹的根結(jié)點(diǎn)開始往下一直到葉結(jié)點(diǎn)所經(jīng)過的結(jié)點(diǎn)形成一條路徑。(注意: 在返回值的list中,數(shù)組長(zhǎng)度大的數(shù)組靠前)

解題思路

http://www.cnblogs.com/edisonchou/p/4787736.html


通過上圖可以總結(jié)出規(guī)律:

  • 當(dāng)用前序遍歷的方式訪問到某一結(jié)點(diǎn)時(shí),我們把該結(jié)點(diǎn)添加到路徑上,并累加該結(jié)點(diǎn)的值。
  • 如果該結(jié)點(diǎn)為葉結(jié)點(diǎn)并且路徑中結(jié)點(diǎn)值的和剛好等于輸入的整數(shù),則當(dāng)前的路徑符合要求,我們把它添加到結(jié)果中去。如果當(dāng)前結(jié)點(diǎn)不是葉結(jié)點(diǎn),則繼續(xù)訪問它的子結(jié)點(diǎn)。
  • 當(dāng)前結(jié)點(diǎn)訪問結(jié)束后,遞歸函數(shù)將自動(dòng)回到它的父結(jié)點(diǎn)。這里要注意的是:在函數(shù)退出之前要在路徑上刪除當(dāng)前結(jié)點(diǎn)并減去當(dāng)前結(jié)點(diǎn)的值,以確保返回父結(jié)點(diǎn)時(shí)路徑剛好是從根結(jié)點(diǎn)到父結(jié)點(diǎn)的路徑。

代碼

class Solution {
public:
    void FindPath(vector<vector<int> > &res, vector<int> &temp,TreeNode* root,int expectNumber, int val) {
        temp.push_back(root->val);
        val += root->val;

        if(!root->left && !root->right && val==expectNumber){
            res.push_back(temp);
        }
        if(root->left) FindPath(res, temp, root->left,expectNumber,val);        
        if(root->right) FindPath(res, temp, root->right,expectNumber,val);
        temp.pop_back();
        val -= root->val;
    }
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
        vector<vector<int> > res;
        vector<int> temp;
        int val=0;
        if(!root) return res;
        FindPath(res, temp, root, expectNumber, val);
        return res;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 作者原創(chuàng)!禁止轉(zhuǎn)載!禁止剽竊!請(qǐng)互相尊重! 可與不可,審明其計(jì)謀,以原其同異。離合有守,先從其志。 當(dāng)你嘗試?yán)斫膺@...
    因色而魔閱讀 8,036評(píng)論 10 12
  • 母親是一棵小草 平凡而有偉大 母親是一棵小草 雖然平凡卻又頑強(qiáng) 她是多么偉大啊...
    好好呵呵aa閱讀 239評(píng)論 0 0
  • 我有一個(gè)特性,就是愛給自己找麻煩。對(duì)于任何事情,都容易產(chǎn)生過于激動(dòng)的反應(yīng),做不到泰然自若,冷靜機(jī)智的分析情況。容易...
    失洲閱讀 209評(píng)論 0 0

友情鏈接更多精彩內(nèi)容