leetcode--01.二叉樹最小深度

感覺一天一道劍指offer題不夠,就再加上一天一道leetcode吧

題目:
Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
給定一棵二叉樹,求出它的最小深度。最小深度是從根節(jié)點到最近的葉節(jié)點的最短路徑上的節(jié)點數(shù)。

思路:
5種情況:空樹;沒有子樹;只有左/右子樹;有倆子樹

本題要注意最小深度與最大深度的區(qū)別:對于最大深度,不需要考慮當(dāng)前子樹是否為單子樹(即一側(cè)子樹深度為0)的情況,即最大深度一直等于左右子樹的最大值;對于最小深度,需要考慮當(dāng)前子樹是否為單子樹的情況,對于雙子樹,其最小深度為左右子樹的最小值,對于單子樹,其最小深度為左右深度的最大值(因為有一側(cè)的子樹為0)。

可采用層序遍歷和深度優(yōu)先遍歷,這題的話層序遍歷效率高一點,因為若是找到一個葉子節(jié)點那么肯定是最短的,無需遍歷所有節(jié)點,貼的代碼用的遞歸

二叉樹操作主要還是利用尾遞歸或者循環(huán)遍歷這兩種思路,進而涉及DFS(主要利用遞歸或者棧實現(xiàn))或者BFS(主要利用隊列實現(xiàn))。剩下的只需要按照這些思路即可。

public class Solution { 
    public int run(TreeNode root) { 
        if(root==null)
            return 0;
        if(root.left==null && root.right==null)
            return 1;
        if(root.left==null || root.right==null)
            return Math.max(run(root.left),run(root.right))+1;
        return Math.min(run(root.left),run(root.right))+1; 
    } 
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容