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

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

二叉树的最大深度:

   递归的分别获取左右子树的深度,返回较大的深度,每次加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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 异或加密_Java异或技操作给任意的文件加密原理及使用详解

    java 异或加密_Java异或技操作给任意的文件加密原理及使用详解异或简单介绍:异或是一种基于二进制的位运算,用符号XOR或者^表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。简单理解就是不进位加法,如1+1=0,,0+0=0,1+0=1。需求描述在信息化时代对数据进行加密是一个很重要的主题,在做项目的过程中,我也实现了一个比较复杂的加密算法,但是由于涉及到的技术是保密的,所以在这里我实现一个比较简单的版本,利用文件的输入输出流和异或操…

    2022年9月28日
    3
  • Laravel 5框架Mutator,Scope

    Laravel 5框架Mutator,Scope首先修改控制器:publicfunctionstore(){Article::create(Request::all());returnredirect(‘articles’);}然后修改视图,添…

    2025年11月2日
    2
  • C# Repeater嵌套循环[通俗易懂]

    C# Repeater嵌套循环[通俗易懂]前台代码:<asp:RepeaterID=”rptList”runat=”server”OnItemDataBound=”users_list”><HeaderTemplate><tablewidth=”100%”border=”0″cellspacing=”0″cellpadding=”0″…

    2022年7月14日
    20
  • AD域服务器的搭建(3)–搭建AD域

    AD域服务器的搭建(3)–搭建AD域DNS前期准备DNS服务器对域来说是不可或缺的原因:域中的计算机使用DNS域名,DNS需要为域中的计算机提供域名解析服务;域中的计算机需要利用DNS提供的SRV记录来定位域控制器域中哪台计算机来负责做DNS服务器呢?要么使用域控制器来做DNS服务器,要么使用一台单独的DNS服务器。1.创建域控制器创建域控制器其实就是在服务器级计算机上安装一个ActiveDirectory数…

    2022年5月17日
    63
  • Android 启动过程的底层实现

    Android 启动过程的底层实现

    2022年1月20日
    55

发表回复

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

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