DFS

1. 二叉樹路徑總和

LeetCode 113 給定一個二叉樹和一個目標和肚豺,找到所有從根節(jié)點到葉子節(jié)點路徑總和等于給定目標和的路徑筷狼。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> ans;
    vector<vector<int>> pathSum(TreeNode* root, int sum) {
        vector<int> path;
        dfs(path,root,sum);
        return ans;
        
    }
    void dfs(vector<int>& path,TreeNode* root, int sum)
    {
        if(!root) return;
        path.push_back(root->val);
        if(!root->left && !root->right)
        {
            int sum2 = accumulate(path.begin(),path.end(),0);
            if(sum2 == sum)
            {
                ans.push_back(path);
                return;
            }
                
        }
        else
        {
            dfs(path, root->left,sum);
            if(root->left)
                path.pop_back();
            dfs(path, root->right,sum);
            if(root->right)
                path.pop_back();
        }
    }
};

如若不使用引用柬批,則不需要恢復(fù)現(xiàn)場

2. 字母大小寫全排列

Leetcode 784 給定一個字符串S实幕,通過將字符串S中的每個字母轉(zhuǎn)變大小寫卸奉,我們可以獲得一個新的字符串空厌。返回所有可能得到的字符串集合庐船。

class Solution {
public:
    vector<string> ans;
    vector<string> letterCasePermutation(string S) {
        dfs(S,0);
        return ans;

    }
    void dfs(string s, int i)
    {
        if(i == s.size())
        {
            ans.push_back(s);
            return;
        }
        dfs(s,i+1);
        if(s[i] >= 'A')
        {
            s[i] ^= 32;
            dfs(s,i+1);
        }
    }
};

3. 組合

Leetcode 77 從n個數(shù)中選k個

class Solution {
public:
    vector<vector<int>> ans;
    vector<vector<int>> combine(int n, int k) {
        vector<int> path;
        dfs(path, 1, n, k);
        return ans;
        
    }
    void dfs(vector<int> &path, int start, int n, int k)
    {
        if(!k)
        {
            ans.push_back(path);
            return;
        }
        for(int i = start; i <= n; i++)
        {
            path.push_back(i);
            dfs(path, i+1, n, k-1);
            path.pop_back();
        }

    }
};

4. 二叉樹所有路徑

Leetcode 257 給定一個二叉樹,返回所有從根節(jié)點到葉子節(jié)點的路徑嘲更。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<string> ans;
    vector<string> binaryTreePaths(TreeNode* root) {
        string path;
        dfs(root, path);
        return ans;

    }
    void dfs(TreeNode * root, string path)
    {
        if(!root) return;

        if(path.size()) path += "->";
        path += to_string(root->val);

        if(!root->left && !root->right) ans.push_back(path);
        else
        {
            dfs(root->left,path);
            dfs(root->right,path);
        }
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末筐钟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赋朦,更是在濱河造成了極大的恐慌篓冲,老刑警劉巖李破,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異壹将,居然都是意外死亡嗤攻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門诽俯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妇菱,“玉大人,你說我怎么就攤上這事暴区〈惩牛” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵仙粱,是天一觀的道長房交。 經(jīng)常有香客問我,道長伐割,這世上最難降的妖魔是什么候味? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮口猜,結(jié)果婚禮上负溪,老公的妹妹穿的比我還像新娘透揣。我一直安慰自己济炎,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布辐真。 她就那樣靜靜地躺著须尚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪侍咱。 梳的紋絲不亂的頭發(fā)上耐床,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音楔脯,去河邊找鬼撩轰。 笑死,一個胖子當著我的面吹牛昧廷,可吹牛的內(nèi)容都是我干的堪嫂。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼木柬,長吁一口氣:“原來是場噩夢啊……” “哼皆串!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起眉枕,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤恶复,失蹤者是張志新(化名)和其女友劉穎怜森,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谤牡,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡副硅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拓哟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片想许。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖断序,靈堂內(nèi)的尸體忽然破棺而出流纹,到底是詐尸還是另有隱情,我是刑警寧澤违诗,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布漱凝,位于F島的核電站,受9級特大地震影響诸迟,放射性物質(zhì)發(fā)生泄漏茸炒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一阵苇、第九天 我趴在偏房一處隱蔽的房頂上張望壁公。 院中可真熱鬧,春花似錦绅项、人聲如沸紊册。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽囊陡。三九已至,卻和暖如春掀亥,著一層夾襖步出監(jiān)牢的瞬間撞反,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工搪花, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留遏片,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓撮竿,卻偏偏與公主長得像吮便,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子倚聚,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361