標籤:二叉樹 深度 演算法 面試 java
【111-Minimum Depth of Binary Tree(二叉樹的最小深度)】
【LeetCode-面試演算法經典-Java實現】【所有題目目錄索引】
原題
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--; // 還原 }}
評測結果
點擊圖片,滑鼠不釋放,拖動一段位置,釋放後在新的視窗中查看完整圖片。
特別說明
歡迎轉載,轉載請註明出處【http://blog.csdn.net/derrantcm/article/details/47414057】
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
【LeetCode-面試演算法經典-Java實現】【111-Minimum Depth of Binary Tree(二叉樹的最小深度)】