1. 程式人生 > >【LeetCode-面試演算法經典-Java實現】【111-Minimum Depth of Binary Tree(二叉樹的最小深度)】

【LeetCode-面試演算法經典-Java實現】【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 class Solution {
    private int min = Integer.MAX_VALUE; // 記錄樹的最小深度
    private int cur = 0; // i當前處理的樹的嘗試

    public int minDepth(TreeNode root) {

        depth(root);
        return min;
    }

    /**
     * 計算樹的深度
     *
     * @param node 當前結點
     */
    private
void depth(TreeNode node) { if (node == null) { min = cur; return; } cur++; // 當前處理的層次加1 // 如果是葉節點,並且路徑比記錄的最小還小 if (node.left == null && node.right == null && cur < min) { min = cur; // 更新最小值 } // 處理左子樹
if (node.left != null) { depth(node.left); } // 處理右子樹 if (node.right != null) { depth(node.right); } cur--; // 還原 } }

評測結果

  點選圖片,滑鼠不釋放,拖動一段位置,釋放後在新的視窗中檢視完整圖片。

這裡寫圖片描述

特別說明