Java二叉树的最小深度leetcode

Java二叉树的最小深度leetcode,第1张

给定一个二叉树,找出其最小深度。

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

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

使用BFS广度优先遍历,即二叉树的层序遍历:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int minDepth(TreeNode root) {
        if(root == null){
            return 0;
        }
        Queue queue = new LinkedList<>();
        queue.add(root);

        TreeNode temp;
        //root本身就是一层
        int depth = 1;
        while( !queue.isEmpty() ){
            int size = queue.size();
            for(int i = 0;i < size;i++){
                temp = queue.poll();

                //第一次左右节点都是null时说明时最短的
                if(temp.left == null && temp.right == null){
                    return depth;
                }
                
                if(temp.left != null){
                    queue.add(temp.left);
                }
                if(temp.right != null){
                    queue.add(temp.right);
                }
            }
            ++depth;
        }
        return depth;

    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/716469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存