二叉樹3-二叉樹的中序遍歷衣迷、翻轉(zhuǎn)二叉樹、二叉樹的直徑

94.給定一個二叉樹的根節(jié)點 root 酱酬,返回它的 中序 遍歷壶谒。

錯誤代碼

    void search (TreeNode* root,vector<int>& result){
        if(!root)
            return;
        if(root->left)
            return search(root->left,result);
        result.push_back(root->val);
        if(root->right)
            return search(root->right,result);
    }
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> result;
        if(!root)
            return result;
        search (root,result);
        return result;
    }

輸入:[1,null,2,3]
輸出:[1,3]
預(yù)期結(jié)果:[1,3,2]

正確代碼

    void inorder(TreeNode* root, vector<int>& res) {
        if (!root) {
            return;
        }
        inorder(root->left, res);
        res.push_back(root->val);
        inorder(root->right, res);
    }
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> res;
        inorder(root, res);
        return res;
    }

錯誤分析
1.return到底什么時候加?
有返回值的時候吧膳沽。
2.用不用判斷roor->left?
一般不用吧

226汗菜、翻轉(zhuǎn)二叉樹

錯誤代碼:

    TreeNode* invertTree(TreeNode* root) {
        if(!root)
            return root;
        root->left=invertTree(root->right);
        root->right=invertTree(root->left);
        return root;
    }

正確代碼:

    TreeNode* invertTree(TreeNode* root) {
        if (root == nullptr) {
            return nullptr;
        }
        TreeNode* left = invertTree(root->left);
        TreeNode* right = invertTree(root->right);
        root->left = right;
        root->right = left;
        return root;
    }

錯誤分析:
原 root.left 的指向已經(jīng)改變了?
如果先給root->left賦值挑社,在計算root->right時陨界,root->left已經(jīng)被改變了。所以痛阻,應(yīng)該先計算結(jié)果菌瘪,再賦值,賦的值沒有被改變過阱当。

543.二叉樹的直徑

給定一棵二叉樹俏扩,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結(jié)點路徑長度中的最大值弊添。這條路徑可能穿過也可能不穿過根結(jié)點动猬。
給定二叉樹:

     1
    / \
   2   3
  / \     
 4   5    

返回 3, 它的長度是路徑 [4,2,1,3] 或者 [5,2,1,3]。

知道使用遞歸表箭,但是沒有想法赁咙。

思路:
兩個葉子節(jié)點之間的路徑=根節(jié)點到左右葉子結(jié)點的深度之和。
所以首先免钻,我們要寫出一個求深度的函數(shù)彼水,這里用到深度優(yōu)先搜索。

    int depth(TreeNode* root)
    {
        if(!root)
            return 0;
        int L=depth(root->left);
        int R=depth(root->right);
        return max(L,R)+1;
    }

之后极舔,設(shè)置一個變量來儲存最大路徑凤覆,對每一個節(jié)點,都把它左右子樹深度相加拆魏,然后與該變量進行比較盯桦。

    int maxd=0;
    int depth(TreeNode* root)
    {
        if(!root)
            return 0;
        int L=depth(root->left);
        int R=depth(root->right);
        if(maxd<L+R)
            maxd=L+R;
        return max(L,R)+1;
    }
    int diameterOfBinaryTree(TreeNode* root) {
        if(!root)
            return 0;
        depth(root);
        return maxd;
    }

主要是沒想到把計算每個節(jié)點最大路徑放在計算深度的函數(shù)里慈俯。
錯誤代碼:

        if(maxd<depth(root->left)+depth(root->right))
            maxd=depth(root->left)+depth(root->right);
        return max(depth(root->left),depth(root->right))+1;

這種情況相當(dāng)于遞歸了三次,會導(dǎo)致超時拥峦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贴膘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子略号,更是在濱河造成了極大的恐慌刑峡,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玄柠,死亡現(xiàn)場離奇詭異突梦,居然都是意外死亡,警方通過查閱死者的電腦和手機羽利,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門宫患,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人这弧,你說我怎么就攤上這事撮奏。” “怎么了当宴?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵畜吊,是天一觀的道長。 經(jīng)常有香客問我户矢,道長玲献,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任梯浪,我火速辦了婚禮捌年,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挂洛。我一直安慰自己礼预,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布虏劲。 她就那樣靜靜地躺著托酸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柒巫。 梳的紋絲不亂的頭發(fā)上励堡,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音堡掏,去河邊找鬼应结。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鹅龄。 我是一名探鬼主播揩慕,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扮休!你這毒婦竟也來了迎卤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤肛炮,失蹤者是張志新(化名)和其女友劉穎止吐,沒想到半個月后宝踪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侨糟,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年瘩燥,在試婚紗的時候發(fā)現(xiàn)自己被綠了秕重。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡厉膀,死狀恐怖溶耘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情服鹅,我是刑警寧澤凳兵,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站企软,受9級特大地震影響庐扫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仗哨,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一形庭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厌漂,春花似錦萨醒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旨椒,卻和暖如春胜嗓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钩乍。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工辞州, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寥粹。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓变过,卻偏偏與公主長得像埃元,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子媚狰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

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