首页 > 其他 > 详细

minDepth

时间:2020-06-06 19:25:57      阅读:37      评论:0      收藏:0      [点我收藏+]
给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:?叶子节点是指没有子节点的节点。

示例:

给定二叉树?[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(root == null){
            return 0;
        }
        if(root.left == null && root.right == null){
            return 1;
        }
        int min = Integer.MAX_VALUE;
        if(root.left != null){
            min = Math.min(minDepth(root.left), min);
        }
        if(root.right != null){
            min = Math.min(minDepth(root.right), min);
        }
        return min + 1;
    }
}
// 迭代
public int minDepth(TreeNode root) {
       Queue<Pair<TreeNode, Integer>> queue = new LinkedList<>();
       if (root == null) {
           return 1;
       } else {
           queue.add(new Pair<>(root, 1));
       }
       int cnt = 0;
       while (!queue.isEmpty()) {
           Pair<TreeNode, Integer> t = queue.poll();
           TreeNode t1 = t.getKey();
           cnt = t.getValue();
           if (t1 != null) {
               queue.add(new Pair<>(t1.left, cnt + 1));
               queue.add(new Pair<>(t1.right, cnt + 1));
               if (t1.left == null && t1.right == null) {
                   break;
               }
           }
       }
       return cnt;
   }

minDepth

原文:https://www.cnblogs.com/athony/p/13055645.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!