LeetCode111. Minimum Depth of Binary Tree

111.Minimum Depth of Binary Tree

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.

public class TreeNode {
   int val;
   TreeNode left;
   TreeNode right;
   TreeNode(int x) { val = x; }
}

方法一:採用層次遍歷的方式,設置一個值記錄層,遍歷到的第一個葉子節點的高度就是這棵二叉樹的最小深度。

public int minDepth(TreeNode root) {
    if(root == null) return 0;
    int count = 0;
    Queue<TreeNode> q = new LinkedList<>();
    q.add(root);
    while(!q.isEmpty()){
        count++;
        for(int i = 0, n = q.size(); i < n; i++){
            TreeNode node = q.poll();
            if(node.left == null && node.right == null) return count;
            if(node.left != null) q.add(node.left);
            if(node.right != null) q.add(node.right);                           
        }
    }
    return count;
}

方法二:採用遞歸的方式,把問題轉化爲子樹的最小深度。

public int minDepth2(TreeNode root) {
    if(root == null) return 0;
    int left = minDepth(root.left);
    int right = minDepth(root.right);
    return (left == 0 || right == 0) ? left + right + 1: Math.min(left,right) + 1;      
}
發佈了48 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章