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

P4913 【深基16.例3】二叉树深度

题目描述

有一个 n(n≤106) 个结点的二叉树。给出每个结点的两个子结点编号(均不超过 n),建立一棵二叉树(根节点的编号为 1),如果是叶子结点,则输入 0 0

建好这棵二叉树之后,请求出它的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。

输入格式

第一行一个整数 n,表示结点数。

之后 n 行,第 i 行两个整数 l、r,分别表示结点 i 的左右子结点编号。若 l=0 则表示无左子结点,r=0 同理。

输出格式

一个整数,表示最大结点深度。

输入输出样例

输入 #1复制

7
2 7
3 6
4 5
0 0
0 0
0 0
0 0

输出 #1复制

4

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] t = new int[n + 1][2]; for (int i = 1; i <= n; i++) {         t[i][0] = sc.nextInt(); // 左子节点t[i][1] = sc.nextInt(); // 右子节点}int d = 0;                              // 树的深度Queue<Integer> q = new LinkedList<>();  // 队列,用于层序遍历(BFS)q.add(1);                               // 根节点入队(根的编号是1)while (!q.isEmpty()) {for (int i = q.size(); i > 0; i--) { // 遍历当前层的所有节点int x = q.poll();                // 出队一个节点if (t[x][0] != 0) q.add(t[x][0]); // 左子节点不为0则入队if (t[x][1] != 0) q.add(t[x][1]); // 右子节点不为0则入队}d++; // 当前层遍历完,深度+1}System.out.println(d); // 输出树的最大深度}
}

int[][] t = new int[n + 1][2];

我们用二维数组 t 来存二叉树:

  • t[i][0] 表示第 i 个节点的左子节点编号

  • t[i][1] 表示第 i 个节点的右子节点编号

for (int i = q.size(); i > 0; i--)

一开始 q.size() 就是当前层的节点数

这层的节点全部出队后,就算一层遍历完;

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

相关文章:

  • 广西两学一做网站可以用手机建设网站吗
  • ToWJQ:按钮控件操作指南
  • 佳易王羽毛球馆计时计费管理系统V17.2:技术解析与中小场馆数字化实践
  • 网站上上传图片 怎么做精美手机网站模板
  • 怎么做网站软件360网址
  • k8s --- resource: StatefulSet
  • 网站规划建设方案模板哪个网站能免费做电子书封面
  • 素材网站设计模板下载网站没有域名
  • 做net网站免费推广网站入口2020
  • 【电路笔记】-电波形
  • phpstudy 做网站seo石家庄
  • Python基础(二)
  • 怎样建立自己的视频号网站建设与优化推广方案
  • 俱乐部手机网站模板做网站做得好的公司
  • Flume安装部署
  • 最新版T5友价互站网源码商城PHP源码交易平台 完整带手机版源码网系统源码
  • 化学商城网站建设做网站有底薪吗
  • 树莓派4B使用指南
  • c语言做网站后台建设部中国建造师网查询
  • Overleaf——编译超时(timed out)的解决办法
  • 网站推广如何做的深圳市注册公司需要什么资料
  • 做电子商务网站建设工资多少钱网站站内链接怎么做
  • Java中同步和异步的区别,以及阻塞和非阻塞的区别
  • 电子商务网站建设问题公司网站制作知乎
  • 科研人如何使用ubantu服务器
  • o2o网站建设手机网站大全123456
  • 【Web安全】JeecgBoot框架SRC高频漏洞分析总结
  • 花都微网站建设北京网站制作出名 乐云践新
  • 路径总和(C)
  • 网站模版怎么样网站内容一样影响收录