515. Find Largest Value in Each Tree Row(DFS)

題目:查找每層的最大值留美,保存到vector中

先說(shuō)一下一開(kāi)始我的bug涧黄,我一開(kāi)始的思路是把vector都初始化為0拙寡,然后再一個(gè)個(gè)替換掉鸵鸥,那么這就會(huì)出現(xiàn)超時(shí)問(wèn)題M沂臁垮抗!后面修改了一下盟庞,不初始化vector捞稿,而是將容器大小與當(dāng)前節(jié)點(diǎn)層數(shù)比較鳄厌,如果小于當(dāng)前節(jié)點(diǎn)層數(shù)荞胡,就插入當(dāng)前節(jié)點(diǎn)的值。

/**
 * 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<int> largestValues(TreeNode* root) {
        vector<int> value;
        if(!root)
            return value;
        findLevelLargestValue(root,0,value);
        return value;
    }
    
    void findLevelLargestValue(TreeNode * root,int depth,vector<int>& value){
        if(!root)
            return;
        
        if(depth>=value.size())
        {
            value.push_back(root->val);
        }
        else
        {
            if(root->val>value[depth])
            {
                value[depth]=root->val;
            }
        }
            
        findLevelLargestValue(root->left,depth+1,value);
        findLevelLargestValue(root->right,depth+1,value);
        
    }
};

下面是leedcode上大神的解法了嚎,空間復(fù)雜度為O(1),采用的是Morris Traversal

class Solution {
public:
    vector<int> largestValues(TreeNode* root) {
        vector<int> res;
        TreeNode* cur = root, *prev = NULL;
        int deep = 0;
        while (cur) {
            if (cur->left == NULL) {
                //
                if (deep >= res.size())
                    res.push_back(cur->val);
                else
                    res[deep] = max(res[deep], cur->val);
                cur = cur->right;
                deep++;
            } else {
                prev = cur->left;
                int move = 1;
                while (prev->right && prev->right != cur) {
                    prev = prev->right;
                    move++;
                }
                if (prev->right == NULL) {
                    if (deep >= res.size())
                        res.push_back(cur->val);
                    prev->right = cur;
                    cur = cur->left;
                    deep++;
                } else {
                    // back to parent node, remove connection
                    prev->right = NULL;
                    deep -= move + 1;
                    //
                    if (deep >= res.size())
                        res.push_back(cur->val);
                    else
                        res[deep] = max(res[deep], cur->val);
                    cur = cur->right;
                    deep++;
                }
            }
        }
        return res;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泪漂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子歪泳,更是在濱河造成了極大的恐慌萝勤,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呐伞,死亡現(xiàn)場(chǎng)離奇詭異敌卓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)伶氢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)趟径,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人癣防,你說(shuō)我怎么就攤上這事蜗巧。” “怎么了蕾盯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵幕屹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)望拖,這世上最難降的妖魔是什么渺尘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮说敏,結(jié)果婚禮上鸥跟,老公的妹妹穿的比我還像新娘。我一直安慰自己像云,他們只是感情好锌雀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著迅诬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪婿牍。 梳的紋絲不亂的頭發(fā)上侈贷,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音等脂,去河邊找鬼俏蛮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛上遥,可吹牛的內(nèi)容都是我干的搏屑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼粉楚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辣恋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起模软,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤伟骨,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后燃异,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體携狭,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年回俐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逛腿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仅颇,死狀恐怖单默,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情灵莲,我是刑警寧澤雕凹,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響枚抵,放射性物質(zhì)發(fā)生泄漏线欲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一汽摹、第九天 我趴在偏房一處隱蔽的房頂上張望李丰。 院中可真熱鬧,春花似錦逼泣、人聲如沸趴泌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嗜憔。三九已至,卻和暖如春氏仗,著一層夾襖步出監(jiān)牢的瞬間吉捶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工皆尔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呐舔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓慷蠕,卻偏偏與公主長(zhǎng)得像珊拼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子流炕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 在一個(gè)方法內(nèi)部定義的變量都存儲(chǔ)在棧中澎现,當(dāng)這個(gè)函數(shù)運(yùn)行結(jié)束后,其對(duì)應(yīng)的棧就會(huì)被回收浪感,此時(shí)昔头,在其方法體中定義的變量將不...
    Y了個(gè)J閱讀 4,418評(píng)論 1 14
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司影兽,掛了不少揭斧,但最終還是拿到小米、百度峻堰、阿里讹开、京東、新浪捐名、CVTE旦万、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,253評(píng)論 11 349
  • 每次坐在車(chē)上,我都有一個(gè)愿望镶蹋,希望這輛不管是什么車(chē)能一直駛下去成艘,一直到不了終點(diǎn)赏半。 后來(lái)看到一部臺(tái)灣偶像電影,男主彭...
    星期八的舊夢(mèng)閱讀 143評(píng)論 0 0
  • 丟了你的消息 好久都找不到 開(kāi)啟心靈的鑰匙 時(shí)光塵封了記憶 歲月碾軋過(guò)相思 隔著山高水長(zhǎng) 穿沙越海 在第1001夜...
    馮雁閱讀 175評(píng)論 4 0
  • 就這樣吧淆两,你只是不甘心断箫,你只是不甘愿,你只是不情愿秋冰,曾經(jīng)他的溫暖仲义,他的溫柔,他的柔情剑勾,現(xiàn)在都放在另一個(gè)她身上埃撵。只是...
    Lucy_Wu閱讀 185評(píng)論 0 0