代碼隨想錄算法訓練營第十六天|104.二叉樹的最大深度、559.n叉樹的最大深度形入、111.二叉樹的最小深度全跨、222.完全二叉樹的節(jié)點個數

104.二叉樹的最大深度??

題目鏈接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/

解答:https://programmercarl.com/0104.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.html

二叉樹節(jié)點的深度:指從根節(jié)點到該節(jié)點的最長簡單路徑邊的條數或者節(jié)點數(取決于深度從0開始還是從1開始)

二叉樹節(jié)點的高度:指從該節(jié)點到葉子節(jié)點的最長簡單路徑邊的條數或者節(jié)點數(取決于高度從0開始還是從1開始)

后序遍歷(左右中)來計算樹的高度:

1.確定遞歸函數的參數和返回值:參數就是傳入樹的根節(jié)點,返回就返回這棵樹的深度亿遂,所以返回值為int類型浓若。

2.確定終止條件:如果為空節(jié)點的話盒使,就返回0,表示高度為0七嫌。

3.確定單層遞歸的邏輯:先求它的左子樹的深度少办,再求右子樹的深度,最后取左右深度最大的數值 再+1 (加1是因為算上當前中間節(jié)點)就是目前節(jié)點為根節(jié)點的樹的深度诵原。

前序(中左右)方法:充分表現出求深度回溯的過程

前序遍歷
前序遍歷(簡化版)

559. n叉樹的最大深度

題目鏈接:https://leetcode.cn/problems/maximum-depth-of-n-ary-tree/

for (Node tmpNode : node. children){

? ? ? ? ? ? depth = Math.max(depth, getDepth(tmpNode));

? ? ? ? ? ? //超時:if (getDepth(tmpNode)>depth){depth = getDepth(tmpNode);}

? ? }


?111.二叉樹的最小深度

題目鏈接:https://leetcode.cn/problems/minimum-depth-of-binary-tree/submissions/

解答:https://programmercarl.com/0111.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.html#%E6%80%9D%E8%B7%AF

錯誤解法:

int?leftDepth?=?getDepth(node->left);

int?rightDepth?=?getDepth(node->right);

int result = 1?+?min(leftDepth,?rightDepth);

造成的錯誤:

誤區(qū)

正確解法:如果左子樹為空英妓,右子樹不為空,說明最小深度是 1 + 右子樹的深度绍赛。反之蔓纠,右子樹為空,左子樹不為空吗蚌,最小深度是 1 + 左子樹的深度腿倚。 最后如果左右子樹都不為空,返回左右子樹深度最小值 + 1 蚯妇。

解法2: 可以用層序遍歷


?222.完全二叉樹的節(jié)點個數

題目鏈接:https://leetcode.cn/problems/count-complete-tree-nodes/

解答:https://programmercarl.com/0222.%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%8A%82%E7%82%B9%E4%B8%AA%E6%95%B0.html#google_vignette

解法1: 層序遍歷

迭代法敷燎,二叉樹:層序遍歷登場!?(opens new window)遍歷模板稍稍修改一下箩言,記錄遍歷的節(jié)點數量就可以了硬贯。

解法2: 遞歸遍歷

遞歸遍歷的順序依然是后序(左右中)

#完全二叉樹

完全二叉樹中,除了最底層節(jié)點可能沒填滿外陨收,其余每層節(jié)點數都達到最大值饭豹,并且最下面一層的節(jié)點都集中在該層最左邊的若干位置。若最底層為第 h 層务漩,則該層包含 1~?2^(h-1) ?個節(jié)點拄衰。

完全二叉樹只有兩種情況,情況一:就是滿二叉樹饵骨,情況二:最后一層葉子節(jié)點沒有滿翘悉。

1. 對于情況一,可以直接用 2^樹深度 - 1 來計算宏悦,注意這里根節(jié)點深度為1镐确。

2.對于情況二,分別遞歸左孩子饼煞,和右孩子,遞歸到某一深度一定會有左孩子或者右孩子為滿二叉樹诗越,然后依然可以按照情況1來計算砖瞧。


完全二叉樹第二種情況

如何去判斷一個左子樹或者右子樹是不是滿二叉樹呢?

在完全二叉樹中嚷狞,如果遞歸向左遍歷的深度等于遞歸向右遍歷的深度块促,那說明就是滿二叉樹荣堰。

非滿二叉樹的情況

if (root==null) return0;

1.?滿二叉樹:可以直接用 2^樹深度 - 1 來計算

TreeNodeleft=root.left;

TreeNoderight=root.right;

int leftDepth=0, rightDepth=0;// 這里初始為0是有目的的,為了下面求指數方便

while (left!=null) {// 求左子樹深度

????left = left. left;

????leftDepth++;}

while (right!=null) {// 求右子樹深度

????right=right.right;

????rightDepth++;}

if (leftDepth==rightDepth) {

????return(2<<leftDepth)-1; // 注意(2<<1) 相當于2^2竭翠,所以leftDepth初始為0}

2. 非滿二叉樹:分別遞歸其左右孩子振坚,直到遇到滿二叉樹為止,用公式計算這個子樹(滿二叉樹)的節(jié)點數量

int leftTreeNum=countNodes(root.left);// 左

int rightTreeNum=countNodes(root.right);// 右

int result=leftTreeNum+rightTreeNum+1;// 中

精簡之后:

return countNodes(root.left)+countNodes(root.right)+1;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末斋扰,一起剝皮案震驚了整個濱河市渡八,隨后出現的幾起案子,更是在濱河造成了極大的恐慌传货,老刑警劉巖屎鳍,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異问裕,居然都是意外死亡逮壁,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門粮宛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窥淆,“玉大人,你說我怎么就攤上這事巍杈∽嫒椋” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵秉氧,是天一觀的道長眷昆。 經常有香客問我,道長汁咏,這世上最難降的妖魔是什么亚斋? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮攘滩,結果婚禮上帅刊,老公的妹妹穿的比我還像新娘。我一直安慰自己漂问,他們只是感情好赖瞒,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚤假,像睡著了一般栏饮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上磷仰,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天袍嬉,我揣著相機與錄音,去河邊找鬼。 笑死伺通,一個胖子當著我的面吹牛箍土,可吹牛的內容都是我干的。 我是一名探鬼主播罐监,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼吴藻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弓柱?” 一聲冷哼從身側響起沟堡,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吆你,沒想到半個月后弦叶,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡妇多,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年伤哺,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片者祖。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡立莉,死狀恐怖,靈堂內的尸體忽然破棺而出七问,到底是詐尸還是另有隱情蜓耻,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布械巡,位于F島的核電站刹淌,受9級特大地震影響,放射性物質發(fā)生泄漏讥耗。R本人自食惡果不足惜有勾,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望古程。 院中可真熱鬧蔼卡,春花似錦、人聲如沸挣磨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茁裙。三九已至塘砸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呜达,已是汗流浹背谣蠢。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留查近,地道東北人眉踱。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像霜威,于是被迫代替她去往敵國和親谈喳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內容