首页 > 编程语言 >104.力扣(leetcode)二叉树的最大深度(JAVA)

104.力扣(leetcode)二叉树的最大深度(JAVA)

时间:2024-11-09 18:50:16浏览次数:3  
标签:遍历 TreeNode temp 力扣 right que 二叉树 JAVA 节点

一、目标

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

二、代码分析

总代码:

/**
 * 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 maxDepth(TreeNode root) {
        Queue<TreeNode> que = new LinkedList<>();
        int depth = 0;
        que.add(root);
        //防止直接传入空节点报异常
        if(root == null){
            return depth;
        }
        while(!que.isEmpty()){
        //记录每一层的节点数,按照节点遍历每个节点单独操作
            int len = que.size();
            while(len != 0){
                TreeNode temp = que.poll();
                if(temp.left != null){
                    que.add(temp.left);
                }
                if(temp.right != null){
                    que.add(temp.right);
                }
                len--;
            }
        //每次遍历完一层的节点就记录一次深度值
            depth++;
        }   
        return depth;
    }
}

  力扣上关于二叉树的定义已经给出,可以直接使用。

  本文选择使用二叉树的层序遍历法解决二叉树最大深度求解问题,思路如下:

  首先进行遍历前的准备,使用一个双端队列来存储遍历到的节点,方便后续操作,开始先先将根节点传入。

        Queue<TreeNode> que = new LinkedList<>();
        int depth = 0;
        que.add(root);
        //防止直接传入空节点报异常
        if(root == null){
            return depth;
        }

  将每层的节点数在遍历之前先储存起来,按照节点数分别从队列中调用poll()方法取出上一层遍历中储存的顺序节点数,每遍历完一层之后记录一次深度值,依次遍历,直到队列为空(上一层的每个节点均没有子节点),结束。

        while(!que.isEmpty()){
        //记录每一层的节点数,按照节点遍历每个节点单独操作
            int len = que.size();
            while(len != 0){
                TreeNode temp = que.poll();
                if(temp.left != null){
                    que.add(temp.left);
                }
                if(temp.right != null){
                    que.add(temp.right);
                }
                len--;
            }
        //每次遍历完一层的节点就记录一次深度值
            depth++;
        }   

三、总结

  本题就是传统遍历基础上修改而成,不同点在于:
  1. 无需创建LIst对象储存每个节点的值,因为我们要返回的是深度值

标签:遍历,TreeNode,temp,力扣,right,que,二叉树,JAVA,节点
From: https://blog.csdn.net/zzb1580/article/details/143567506

相关文章

  • 力扣(Leetcode)112. 路径总和(JAVA)
    一、目标 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。二、代码解读......
  • 257. 力扣(LeetCode)二叉树的所有路径(JAVA)
    一、目标给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。二、代码解读总代码:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*......
  • Java毕业设计-基于SSM的新生报到系统【代码+论文+PPT+开题】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:SSM数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能个人中心:提供学生个人信息查看与编辑,以及报到进度......
  • java毕业设计-基于SSM的购物商城系统【代码+论文+PPT+开题+任务书】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:SSM数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能个人中心:管理用户个人信息,包括资料编辑、密码修改......
  • java毕业设计-基于ssm的汽车配件销售业绩管理系统【代码+论文+PPT+任务书+开题报告】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:SSM数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能个人中心:管理用户个人信息,包括账户设置、资料编辑......
  • JAVA自动化扫描并使用Driver进行小型DDOS-----JAVA
    packagecom.alatus.searchinfo.config;importcom.alatus.searchinfo.Entity.AccountEntity;importcom.alatus.searchinfo.utils.HttpUtils;importcom.alibaba.excel.context.AnalysisContext;importcom.alibaba.excel.metadata.CellExtra;importcom.alibaba.excel......
  • PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点?
    相信每一个计算机科班出身的同学或许都有这样的经历:在大三的某一天,仿佛打通了全身筋脉一般把三年的所学:“数电里的与非门——[计算机体系结构]——汇编语言——C语言——C++语言——Java语言”。所有知识全部串联了起来。所有这些语言的出现都仿佛都有了必然性和追根溯源的历史......
  • 全新版Java面试八股文合集(495道)
     过滤器和拦截器区别(这个问题基础,没想到问的频率挺高,还容易回答不好)他们都可以在请求的过程中插入一手,他们的请求过程如下:当一个请求过来时,会交给web服务器提供的过滤器,再来到servert。有一个叫DispatchServert的servert,在它里面就会调用我们的拦截器,再由我们的DispatchSer......
  • 代码随想录算法训练营第十七天| 654.最大二叉树 , 617.合并二叉树 , 700.二叉搜索树中的
    654.最大二叉树文章链接:https://programmercarl.com/0654.最大二叉树.html题目链接:https://leetcode.cn/problems/maximum-binary-tree/description/classSolution{public:TreeNode*traversal(vector<int>&nums,intleft,intright){if(left>=right)ret......
  • 11.9 javaweb学习 day2 基础标签&样式
    网页响应流程浏览器前端服务器后端服务器数据库1.浏览器请求前端2.前端响应浏览器3.浏览器请求后端4.后端请求数据库5.数据库响应后端6.后端响应浏览器网页的组成1.网页的文字,图片,音频,视频,超链接什么的,本质是前端代码2.前端代码通过浏览器的转化......