当前位置: 首页 > news >正文

南通住房和城乡建设厅网站首页腾讯搜索引擎入口

南通住房和城乡建设厅网站首页,腾讯搜索引擎入口,品牌网站建设网,网站建设湖南一、定义 什么是二叉树的最小深度? 二叉树的最小深度是指从根节点到最近的叶子节点的最短路径上的节点数。叶子节点是指没有子节点的节点。 举个例子: 1/ \2 3/ 4 这棵树的最小深度是 2,因为从根节点 1 到叶子节点 3 的路径最短&#x…

一、定义

什么是二叉树的最小深度?

二叉树的最小深度是指从根节点到最近的叶子节点的最短路径上的节点数。叶子节点是指没有子节点的节点。

举个例子:

     1/ \2   3/ 4

这棵树的最小深度是 2,因为从根节点 1 到叶子节点 3 的路径最短,只需要经过 1 和 3 两个节点。


广度优先搜索(BFS)的思路

广度优先搜索是一种遍历树的方法,它的特点是一层一层地遍历,先遍历离根节点最近的节点,再遍历离根节点稍远的节点。BFS 非常适合用来求解最小深度,因为它一旦找到第一个叶子节点,就可以立即返回结果。

用 BFS 求最小深度的步骤如下:

  1. 从根节点开始,将其放入队列中。

  2. 逐层遍历

    • 每次从队列中取出一个节点,检查它是否是叶子节点(即没有左子树和右子树)。

    • 如果是叶子节点,直接返回当前深度。

    • 如果不是叶子节点,将它的子节点(左子节点和右子节点)加入队列。

  3. 重复上述过程,直到找到第一个叶子节点。


举个例子

假设我们有一棵树:

复制

     1/ \2   3/ \4   5

用 BFS 计算最小深度的过程如下:

  1. 初始化队列为 [1],深度为 1。

  2. 处理节点 1

    • 它不是叶子节点,将它的子节点 2 和 3 加入队列。队列变为 [2, 3]

  3. 处理节点 2

    • 它是叶子节点,返回当前深度 2。

所以这棵树的最小深度是 2。

二,举例

            1/ \2   3/ \   \4   5   6\7
import javax.swing.tree.TreeNode;
import java.util.LinkedList;
import java.util.Queue;public class demo01 {public static void main(String[] args) {TreeNode node7 =new TreeNode(7,null,null);TreeNode node6 =new TreeNode(6,node7,null);TreeNode node5 =new TreeNode(5,null,null);TreeNode node4 =new TreeNode(4,null,null);TreeNode node3 =new TreeNode(3,node6,null);TreeNode node2 =new TreeNode(2,node4,node5);TreeNode node1 =new TreeNode(1,node2,node3);System.out.println(minDepth1(node1));}//深度优先public static int minDepth(TreeNode root) {if (root == null) {return 0;}if (root.left == null && root.right == null) {return 1;}int min=Integer.MAX_VALUE;if(root.left != null) {                      //左边节点不为空min=Math.min(minDepth(root.left),min);    //算出左边节点}if(root.right != null) {                        //左边节点不为空min=Math.min(minDepth(root.right),min);   //算出左边节点}return min+1;}//广度优先public static int minDepth1(TreeNode root) {if (root == null) {return 0;}Queue<TreeNode> queue = new LinkedList<TreeNode>();root.deep=1;queue.offer(root);while (!queue.isEmpty()) {TreeNode node = queue.poll();if (node.left == null && node.right == null) {return node.deep;}if (node.left != null) {            //左边节点不为空node.left.deep=node.deep+1;     //就入队queue.offer(node.left);}if (node.right != null) {           //左边节点不为空node.right.deep=node.deep+1;    //就入队queue.offer(node.right);}}return 0;}static class TreeNode {int deep;int val;TreeNode left;TreeNode right;TreeNode(int val,TreeNode left,TreeNode right) {this.val = val;this.left = left;this.right = right;}}
}

http://www.dtcms.com/a/509706.html

相关文章:

  • 2017手机网站建设方案杭州专业网站设计策划
  • 怎么自己创立网站网站架设软件
  • wordpress企业网站模板wordpress右侧居中
  • 重庆网站建设夹夹虫负责网站备案号被注销怎么办
  • python做软件的网站南通企业免费建站
  • 关键词整站排名优化焦作关键词优化排名
  • 英文版网站建设方案小程序商城的服务哪家好
  • 云南建设厅官方网站小企业做网站
  • 有效的网站建设公专业商业空间设计公司
  • 网站建设 服务器编写网站方案设计书表格
  • 做房产应看的网站福田做网站
  • 新能源汽车价格趋势麦当劳的网站优化建议
  • 网站建设与管理vs2010安徽科技学院
  • 搭建网站的步骤免费网络电视app
  • 河南中州路桥建设有限公司网站两学一做登录网站
  • 青海建设厅网站黑名单企业简介画册
  • 自己做的网站可以用于百度推广吗宁波网站制作联系方式
  • wordpress 整站音乐嘉兴网站设计
  • 学校网站设计图片wordpress 跳转小程序
  • 动软代码生成器 做网站怎样攻击网站
  • 网站推广基本预算wordpress本地安装插件
  • 7. 解码器层(DecoderLayer):Transformer的“目标序列生成器”
  • 网站报价页做一款app需要什么技术
  • 没有英文网站怎么做外贸只做水果的网站
  • 网站流量怎么变现呢南阳定制网站制作价格低
  • 品牌网站开发策划书曲靖网站微信建设
  • 网站开发的一次性收益做微信公众号第三网站
  • 自己做的网站上传手机做电商怎么赚钱
  • 【GESP】C++五级考试大纲知识点梳理, (5) 算法复杂度估算(多项式、对数)
  • 微商城手机网站制作公司网站设计手机版为什么那么多背景