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

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

二叉树的最大深度:

   递归的分别获取左右子树的深度,返回较大的深度,每次加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)
上一篇 2021年9月15日 下午7:00
下一篇 2021年9月15日 下午8:00


相关推荐

  • Linux 查看java进程的命令

    Linux 查看java进程的命令刚才去了微众税银面试。面试官赶时间,导致我的语速也快了起来,其中有个问题没答上,那就是Linux下查看java进程的命令。回来做个记录,以防还有公司问到(之前工作上遇到Linux还是太少了(;´д`)ゞ,服)。Linux下查看和停止所有java进程在Linux下查看所有java进程命令:ps-ef|grepjava停止所有java进程命令:pkill-9java停止特…

    2022年8月24日
    14
  • 什么是模式识别,对抗学习是什么?

    什么是模式识别,对抗学习是什么?模式识别是什么 作为人工智能的一个重要方向 模式识别的主要任务是模拟人的感知能力 如通过视觉和听觉信息去识别理解环境 又被称为 机器感知 或 智能感知 人们在观察事物或现象的时候 常常要寻找它与其他事物或现象的不同之处 并根据一定目的把相似 但又细节不同的事物或现象组成一类 字符识别就是一个典型的例子 如数字 4 可以有各种写法 但都属于同一类别 人脑具有很强的模式识别和推广能力 即使对于某

    2026年3月16日
    3
  • js添加元素、节点

    js添加元素、节点1 使用 document creatElement 元素类型 创建节点 例如创建一个 div 就使用 document createElemen div 该方法返回创建好的 DOM 对象 2 使用父元素 append 方法将创建好的节点作为子元素添加进某个元素下 示例 DOCTYPE tml htmllang en head metacharset UTF 8 metacharset UTF 8 head htmllang en

    2026年3月16日
    2
  • IdeaVim中文输入体验优化

    IdeaVim中文输入体验优化IntelljIDEA是一个非常不错的JavaIDE,IdeaVim插件更是让喜欢用vim的我兴奋不已。但是IdeaVim对中文输入的支持不太好,要频繁切换中英文很麻烦。今年推荐一款插件可能解决这个问题哦。目前只支持Windows和mac。效果如下:安装插件输入法的小插件IdeaVimExtension你都用上IdeaVim了,说明我就不用介绍IDEA如何安装插件了,有问题请留言。配置在~/.ideavimrc中增加如下两行。:setkeep-english-in-normal:s

    2025年11月11日
    9
  • 第二重要极限公式推导过程_我们来更自然地推导泰勒公式!

    第二重要极限公式推导过程_我们来更自然地推导泰勒公式!泰勒公式虽然形式不算复杂 但来路比较诡异 几乎所有的教材都是直接给出这个公式 然后再进行相应的结论证明 显得过于突兀 也不便于理解 本文尝试给出一种由基本的导数公式和极限定理推导泰勒公式的方法 希望能对读者诸君有所帮助 一 从一阶泰勒公式说起我们首先从一阶导数着手 假设在有一阶导数 那么根据定义 就有现在回顾一下关于函数极限的一个结论 其中 是该极限过程下的某个无穷小 即利用这

    2026年3月18日
    2
  • 云服务器怎么配置cpu与内存搭配「建议收藏」

    云服务器怎么配置cpu与内存搭配「建议收藏」很多朋友在购买云服务器之前都会搜服务器一般用几核才够用,因为服务器现在配置很多。低到1核2G、2核4G。高到16核32G、32核64G。甚至某些云服务器可以做到256核5120G这种神奇配置。那么购买云服务器时如何选择cpu与内存搭配?出现资源不足时应如何排查原因呢?一、处理器性能解析首先要明确一点,虽然都是多少核。但是服务器的处理器性能还是有差异的。具体可以搜对应处理器CPU性能天梯。阿里云的服务器都是定制…

    2022年5月22日
    411

发表回复

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

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