<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          每日一道 LeetCode (22):二叉樹的最大深度

          共 1600字,需瀏覽 4分鐘

           ·

          2020-08-18 11:56


          ?

          每天 3 分鐘,走上算法的逆襲之路。

          ?

          前文合集

          每日一道 LeetCode 前文合集

          代碼倉庫

          GitHub:https://github.com/meteor1993/LeetCode

          Gitee:https://gitee.com/inwsy/LeetCode

          題目:二叉樹的最大深度

          題目來源:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

          給定一個二叉樹,找出其最大深度。

          二叉樹的深度為根節(jié)點(diǎn)到最遠(yuǎn)葉子節(jié)點(diǎn)的最長路徑上的節(jié)點(diǎn)數(shù)。

          說明:?葉子節(jié)點(diǎn)是指沒有子節(jié)點(diǎn)的節(jié)點(diǎn)。

          示例:給定二叉樹 [3,9,20,null,null,15,7],

          ????3
          ???/?\
          ??9??20
          ????/??\
          ???15???7

          返回它的最大深度 3 。

          解題思路

          經(jīng)過前兩天的訓(xùn)練以及學(xué)習(xí),看到這道題的第一個反應(yīng)應(yīng)該是這題有兩種做法,一種是遞歸,另一種是迭代。

          如果這個都沒想到的同學(xué),建議重新看下前面兩篇文章,看完以后記得一定要自己手動實(shí)現(xiàn)一遍。

          畢竟實(shí)踐出真知。

          第一種方法:「遞歸」

          關(guān)于如何遞歸我就不多說了,這玩意很難講清楚,更好的方式是自己拿到代碼,多 debug 幾次,自然就理解了,可能這就是天賦?

          public?int?maxDepth(TreeNode?root)?{
          ????if?(root?==?null)?return?0;
          ????return?Math.max(maxDepth(root.left),?maxDepth(root.right))?+?1;
          }

          代碼很短,總共就兩行,如果要讓我講清楚這兩行,屬實(shí)有點(diǎn)強(qiáng)人所難。

          所以,一切看緣分吧,懂就是懂了。

          第二種方法:「迭代」

          迭代說白了就是循環(huán),整體思路會比遞歸好理解很多,當(dāng)然,這種方案代碼也會比遞歸多很多。

          首先還是先定義一個隊(duì)列(好像截止目前,所有遇到二叉樹進(jìn)行迭代都是要先搞一個隊(duì)列),把我們的二叉樹放進(jìn)去,然后開始第一個大循環(huán),直到我們的隊(duì)列里面為空結(jié)束。

          注意哦,我們放在隊(duì)列里面的是當(dāng)前層的所有節(jié)點(diǎn),接下來我們在大循環(huán)里面再做一個小循環(huán),這個小循環(huán)的作用是遍歷當(dāng)前層所有節(jié)點(diǎn),看看這些節(jié)點(diǎn)的下一層還有沒有新的節(jié)點(diǎn),如果還有就拿出來放到隊(duì)列里面,沒有的話就接著下一次循環(huán)。

          這解釋的夠清楚了吧,下面是代碼:

          public?int?maxDepth_1(TreeNode?root)?{
          ????if?(root?==?null)?return?0;
          ????Queue?queue?=?new?LinkedList();
          ????queue.offer(root);

          ????int?ans?=?0;

          ????while?(!queue.isEmpty())?{
          ????????int?size?=?queue.size();
          ????????while?(size?>?0)?{
          ????????????TreeNode?node?=?queue.poll();
          ????????????if?(node.left?!=?null)?{
          ????????????????queue.offer(node.left);
          ????????????}
          ????????????if?(node.right?!=?null)?{
          ????????????????queue.offer(node.right);
          ????????????}
          ????????????size--;
          ????????}
          ????????ans++;
          ????}
          ????return?ans;
          }
          感謝閱讀



          瀏覽 61
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产人妖TS重口系列91中文 | eeuss| 日本女人性高潮视频 | 怡红院院AV | 国产精品欧美7777777 |