二叉树的最大深度和最小深度浅析

二叉树的最大深度和最小深度浅析

二叉树的最大深度:

   递归的分别获取左右子树的深度,返回较大的深度,每次加1即可。

代码:

1      public static int maxDepth(TreeNode root){
2          if(root == null){
3              return 0;
4          }
5         int len1 = 1+maxDepth(root.left);
6         int len2 = 1+maxDepth(root.right);
7         return len1 >= len2? len1:len2;
8      }

 

二叉树的最小深度:

 设置一个深度计数变量

 每次获取二叉树的一层结点,依次遍历该层的结点,第一次遇到叶子结点就返回,此时的深度是最小深度。

 1     public static int minDepth(TreeNode root){
 2         if(root == null){
 3             return 0;
 4         }
 5         //深度计数变量
 6         int height = 0;
 7         //存取该层结点集合
 8         ArrayList<TreeNode> arr = new ArrayList<TreeNode>();
 9         arr.add(root);
10         return minDepth(height,arr);
11     }
12 
13     public static int minDepth(int height, ArrayList<TreeNode> arr) {
14         //存取下一层的结点集合
15         ArrayList<TreeNode> arr1 = new ArrayList<TreeNode>();
16         height++;
17         for(TreeNode tree: arr){
18             //遇到叶子结点就返回
19             if(tree.left == null && tree.right == null){
20                 return height;
21             }
22             
23             if(tree.left != null){
24                 arr1.add(tree.left);
25             }
26             
27             if(tree.right != null){
28                 arr1.add(tree.right);
29             }
30         }
31         return minDepth(height, arr1);
32     }

 

转载于:https://www.cnblogs.com/bywallance/p/5570233.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108982.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL SERVER 中的smalldatetime和datetime区别「建议收藏」

    SQL SERVER 中的smalldatetime和datetime区别「建议收藏」SQLSERVER中的smalldatetime和datetime区别Postedon 2011-01-0410:43 Rainbow.ding 阅读(2371)评论(0) 编辑 收藏 smalldatetime不能到秒. 不過它占的空間小.(4位) datetime(8位) 而且兩者的時間範圍不一樣.   datetime占8字节,精度3.3

    2022年5月19日
    54
  • RX500系列显卡挖矿修改BIOS教程

    RX500系列显卡挖矿修改BIOS教程本教程用到的工具:atiflash274(刷BIOS和提取BIOS)源链接:https://www.techpowerup.com/download/ati-atiflash/百度云链接:http://pan.baidu.com/s/1slJh4xZ密码:3rwbPolarisBiosEditor-master(修改BIOS)源链接:https://github.

    2022年6月12日
    314
  • 有序的hashmap_treemap是有序的吗

    有序的hashmap_treemap是有序的吗如何给HashMap中的值排序?这个问题很多人都遇到过,很常见的一个方案是使用LinkedHashMap,因为LinkedHashMap可以记住元素放入的顺序,可以认为是真正的“有序”(想让HashMap有序是不可能的),我比较喜欢。然而问题是往往数据已经封装在了HashMap中,我们必须手动的排序后再放入LinkedHashMap,这当然也就成了思路,代码实现起来也很简单,写出来看起来还挺舒服的…

    2022年9月24日
    1
  • epoll、poll、select的原理和区别

    epoll、poll、select的原理和区别一、什么是epoll?epoll是一种I/O事件通知机制,是linux内核实现IO多路复用的一个实现。IO多路复用是指,在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回,然后对其的进行读写操作。epoll有两种工作方式,ET-水平触发和LT-边缘触发(默认工作方式),主要区别是:LT,内核通知你fd是否就绪,如果没有处理,则会持续通知。而ET,内核只通知一次。二、epoll的三个函数intepoll_create(intsize)size参数告诉内核这

    2025年6月16日
    2
  • Ubuntu使用vdbench批量创建目录和文件「建议收藏」

    Ubuntu使用vdbench批量创建目录和文件「建议收藏」Vdbench是一个命令行实用程序,旨在生成用于验证存储性能和存储数据完整性的磁盘I/O负载。还可通过输入文本文件指定Vdbench执行参数,下面是使用vdbench批量创建目录和文件的示例1.先利用wget下载vdbench,比如当前版本为:vdbench503.zip2.再使用unzip命令解压缩,$unzipvdbench503.zip-d/data/

    2022年5月12日
    46
  • istringstream ostringstream

    istringstream ostringstream转自:http://dev.csdn.net/article/77/77033.shtmhttp://www.chinaitpower.com/A/2002-04-21/20488.html   C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstrea

    2022年6月26日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号