LeetCode111. 二叉樹的最小深度
阿新 • • 發佈:2018-12-14
給定一個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定二叉樹 [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回它的最小深度 2.
思路:廣度優先遍歷二叉樹,記錄遍歷到的層數,當找到第一個葉子結點時,該葉子結點所在層數就是二叉樹的最小深度。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int minDepth(TreeNode root) { if(null==root){ return 0; } ArrayDeque<TreeNode> queue=new ArrayDeque<TreeNode>(); queue.add(root); int min=0; while(!queue.isEmpty()){ int size=queue.size(); int flag=0; for(int i=0;i<size;i++){ TreeNode node=queue.removeFirst(); if(null==node.left&&null==node.right){//找到葉子結點 flag=1; } if(null!=node.left){ queue.add(node.left); } if(null!=node.right){ queue.add(node.right); } } min++; if(flag!=0){ break; } } return min; } }