二叉樹的最小深度

原題

  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.node

題目大意

  給定一棵兩叉樹求樹的最小深度。算法

解題思路

  遍歷法,對整個樹進行遍歷,找出最小的深度。spa

代碼實現

樹結果定義.net

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

 

算法實現類rest

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--; // 還原

    }
}
相關文章
相關標籤/搜索