104.二叉樹的最大深度
文檔和視頻講解:代碼隨想錄(programmercarl.com)
狀態(tài):ac
用時:1h
思路:就是求得左右子樹的最大深度,遞歸的返回值是該節(jié)點下的最大深度谎僻,參數(shù)是該節(jié)點的指針娄柳,終止條件為指針為空,此時返回0艘绍。遞歸邏輯為獲取左右子樹的深度取最大值赤拒,然后加一。迭代的思想是用層序遍歷诱鞠,每一層深度加一挎挖。
代碼:
? ?
111.二叉樹的最小深度
文檔和視頻講解:代碼隨想錄(programmercarl.com)
狀態(tài):迭代ac,遞歸未ac
用時:1h
思路:如果用層序遍歷般甲,思路比較簡單肋乍,一層層訪問,當?shù)谝淮斡龅饺~節(jié)點敷存,即沒有左右兒子的節(jié)點的時候墓造,表示是最小深度。遞歸的方法锚烦,在遞歸邏輯上不同于最大深度觅闽。如果按照左右子樹兩邊比較誰的樹深度更小來遞歸的話,無法識別當節(jié)點只有左子樹或者右子樹的情況涮俄,這個時候會把最小深度計算為1(把當前節(jié)點當成了葉節(jié)點)蛉拙。因此要識別只有單邊的時候的樹。
代碼:
222.完全二叉樹的節(jié)點個數(shù)
文檔和視頻講解:代碼隨想錄(programmercarl.com)
狀態(tài):普通二叉樹方法ac彻亲,完全二叉樹的方法未ac
用時:1h
思路:普通二叉樹的遞歸方法是左右子樹的節(jié)點數(shù)量加起來再加一就可孕锄,迭代方法就是層序遍歷的同時把隊列的每一層節(jié)點數(shù)量加上即可吮廉。完全二叉樹的方法中,完全二叉樹有兩種情況畸肆,一種是滿二叉樹宦芦,一種是最后一層沒有滿。在計算第二種情況節(jié)點個數(shù)的時候轴脐,分別遞歸左右子節(jié)點到一定深度會有節(jié)點的左或右子樹是滿二叉樹调卑,此時計算該子樹可以用滿二叉樹的公式,而不用遞歸時一個一個節(jié)點算大咱。
? ? 那么計算此時節(jié)點的樹是否是滿二叉樹恬涧,可以根據(jù)最左邊的深度和最右邊的深度是否相等來看。
代碼: