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

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

二叉树的最大深度:

   递归的分别获取左右子树的深度,返回较大的深度,每次加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


相关推荐

  • pip 升级

    pip 升级今天使用 python 时想要安装一个新模块结果却出现了由于很久没用 python 所以很多东西都没升级 所以就执行了 python mpipinstall upgradepip 结果却在查找网络上发现类似问题的解决方法是重装 pip 命令是 python mpipinstall Uforce reinstallpip 结果如图 参考 http www it

    2026年3月18日
    3
  • KeyValuePair和Dictionary详解:「建议收藏」

    KeyValuePair和Dictionary详解:「建议收藏」1、KeyValuePaira、KeyValuePair是一个结构体(struct);b、KeyValuePair只包含一个Key、Value的键值对。2、Dictionarya、Dictionary可以简单的看作是KeyValuePair的集合;b、Dictionary可以包含多个Key、Value的键值对。usingSystem;usingSystem.Collections.Generic;namespaceConsoleTest

    2022年7月15日
    20
  • Pycharm导入matplotlib失败的解决办法

    Pycharm导入matplotlib失败的解决办法这个问题折磨了一天 终于解决了 我用 Anaconda 下载的 matplotlib 包 然后用 pycharm 进行代码编写 但是无论如何都报错 出现 from importmultia 导入 dll 失败的错误 翻了很多资料 终于解决了 解决办法 在 Anaconda 中下载的 matplotlib 包不能导入 要在 pycharm 中下载 具体步骤如下 nbsp

    2026年3月27日
    2
  • Mysql授予权限

    Mysql授予权限授予权限需要使用实例级账户登录后操作,以root为例主要操作包括:查看所有用户 修改密码 删除用户1.查看所有用户所有用户及权限信息存储在mysql数据库的user表中 查看user表的结构descuser;主要字段说明: Host表示允许访问的主机 User表示用户名 authentication_string表示密码,为加密后的值 查看所有…

    2022年7月27日
    11
  • 开发中常用的只允许一个程序运行的办法createmutex

    开发中常用的只允许一个程序运行的办法createmutex开发中常用的只允许一个程序运行的办法 程序以单例模式运行常用办法 创建一个互斥量 由于互斥量只允许一个进程或者线程占用会创建失败 利用这个特性可以做到单例运行改程序 include stdafx h include lt windows h gt include lt stdio h gt int tmain intargc TCHAR argv

    2026年3月16日
    2
  • chrome无法从该网站添加应用、扩展程序和用户脚本_谷歌浏览器该插件不受支持怎么解决

    chrome无法从该网站添加应用、扩展程序和用户脚本_谷歌浏览器该插件不受支持怎么解决今天将谷歌浏览器升级到了最新的版本,在安装拓展应用的时候,却发现无法添加应用、拓展程序和用户脚本,让我很是郁闷,现整理解决方法如下:1.在GoogleChrome浏览器的桌面快捷方式上鼠标右键,选择属性(R),进入如下界面2.在目标(T)后添加参数–enable-easy-off-store-extension-install(注意在添加参数之前,要有个空格),…

    2022年10月8日
    5

发表回复

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

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