[LeetCode] #111 Minimum Depth of Binary Tree 解題

題目連結

題型解說

這是一題難度為簡單的題目

需要設計一個方法,此方法會傳入一個二元樹 root

回傳這棵樹最淺節點深度

解題思路

這題看是要寫個遞迴還是使用 Queue 搭配迴圈都可以

記得不要用到 Stack 了,Queue 是先進先出

修改一下 [LeetCode] #110 Balanced Binary Tree 解題 的解法就可以了

程式碼

Java

class Solution {
    public int minDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        
        if (root.left == null) {
            return minDepth(root.right) +1;
        } else if (root.right == null) {
            return minDepth(root.left) +1;
        }
        
        return Math.min(minDepth(root.left) +1, minDepth(root.right) +1);
    }
}
class Solution {
    public int minDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        
        int result = 0;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        
        while (!queue.isEmpty()) {
            result++;
            
            for (int i = 0, len = queue.size(); i < len; i++) {
                TreeNode node = queue.poll();
            
                if (node.left == null && node.right == null) {
                    return result;
                }

                if (node.left != null) {
                    queue.add(node.left);
                }

                if (node.right != null) {
                    queue.add(node.right);
                }
            }
        }
        
        return result;
    }
}