左孩子右兄弟

news2024/12/23 3:03:15

左孩子右兄弟 - 蓝桥云课 (lanqiao.cn)

这个题讲解一下思路。

看图

把样例转为二叉树:

我们可以发现所谓左孩子右兄弟就是说把一个节点的所有孩子节点中选取一个作为左子节点,这个节点的剩余孩子节点依次链接在这个左孩子节点的右边,直到某个节点有孩子节点再把它挂在左边。这就是左孩子右兄弟。为了从让二叉树的高度最大,我们使得根节点1的带有最多孩子节点的某个孩子节点在最下部。

而我们解答题目的关键就是计算根节点有几个孩子,根节点孩子的数量同时加上以这些孩子为根节点的子树的最大深度。以此一层一层类推进行递归处理。



import java.awt.PageAttributes.OriginType;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.math.MathContext;
import java.security.PublicKey;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.TreeSet;

import javax.management.relation.InvalidRelationTypeException;
public class Main {	
  public static void main(String[] args) throws NumberFormatException, IOException  {
Scanner sc=new Scanner(System.in);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw1=new PrintWriter(System.out);
String[] aStrings=br.readLine().split(" ");
int a=Integer.parseInt(aStrings[0]);
int b;
for(b=1;b<=a+1;b++) {
	al1[b]=new ArrayList<>();
}
for(b=2;b<=a;b++) {
	String[] bStrings=br.readLine().split(" ");
	int c=Integer.parseInt(bStrings[0]);
	al1[c].add(b);//根节点为c的节点存储了一个子节点b
}
System.out.println(dfs(1));
}
  public static int aa=100009;
  
  public static ArrayList<Integer>[] al1=new ArrayList[aa];//数组编号代表着根节点编号
  public static int dfs(int a) {
	  int b;
	  int count=0;//由于只有根节点1默认为树的高度为0.所以以孩子节点的子数的高度在只有孩子节点时也为0
	  int c=al1[a].size();
	  for(b=0;b<c;b++) {
		  count=Math.max(count, dfs(al1[a].get(b)));
	  }
	  return count+al1[a].size();
  }
}

  
  
  
  


  
  
  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1182068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【送书福利-第二十五期】《AI时代系列书籍》

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

python零基础扫盲02基础知识

02 2.1.1注释规则 2.1.2代码缩进 2.1.3编码规范 2.2.1保留字与标识符 2.2.2理解python中的变量 2.3.1数字 2.3.2字符串 2.3.3布尔类型 2.3.4数据类型转换 2.4.1使用input&#xff08;&#xff09;函数输入 2.4.2使用print&#xff08;&#xff09;函数输出

论文阅读:Ensemble Knowledge Transfer for Semantic Segmentation

论文地址&#xff1a;https://ieeexplore.ieee.org/document/8354272 项目及数据地址&#xff1a;https://github.com/ishann/aeroscapes 发表时间&#xff1a;2018年5月7日 语义分割网络通常以严格监督的方式学习&#xff0c;即它们在相似的数据分布上进行训练和测试。在域转…

Element 自定义指令 下拉分页,获取无限数据

原文链接https://www.cnblogs.com/DL-CODER/p/17528026.html自定义指令loadmore: Vue.directive(loadmore, {bind(el, binding) {// 获取element-ui定义好的scroll盒子const SELECTWRAP_DOM el.querySelector(.el-select-dropdown .el-select-dropdown__wrap)if (SELECTWRAP_…

87.有效的完全平方数(力扣)

目录 问题描述 代码解决以及思想 知识点 问题描述 代码解决以及思想 class Solution { public:bool isPerfectSquare(int num) {long int left 0; // 定义左边界&#xff0c;使用 long int 以避免整数溢出long int right num; // 定义右边界&#xff0c;初始…

跨境电商平台Etsy被封?那是因为你没做对这件事!

ETSY是一个在线市场和电商平台&#xff0c;专注于手工艺品、独特商品和创意艺术。它为卖家提供了一个平台来展示和销售自己的手工制品、艺术品、珠宝、家居用品、时尚配饰等各种创意产品。作为一个颇受中国商家青睐的平台&#xff0c;Etsy在账号检测方面也是不亚于亚马逊之严格…

SOLIDWORKS 2024新功能--Electrical篇

电气工程师在完成电气原理图设计的同时&#xff0c;还需要频繁的修改&#xff0c;导出各报表&#xff0c;使得大量时间浪费在重复性的手动工作上&#xff0c;即便如此&#xff0c;也无法保证百分百准确无误&#xff1b;电气设计部门和机械设计部门虽然在设计同一产品&#xff0…

【前端面试题】 HTML+CSS篇

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;web前端面试题库 如何理解 HTML 语义化&#xff1f; 根据内容来选择合适的标签 优点&#xff1a; 让人更容易读懂&#xff08;增加…

无人机航迹规划:狐猴优化算法LO求解无人机路径规划MATLAB(可以修改起始点,地图可自动生成)

一、狐猴优化算法 狐猴优化算法&#xff08;Lemurs Optimizer&#xff0c;LO&#xff09;由Ammar Kamal Abasi等人于2022年提出&#xff0c;该算法模拟狐猴的跳跃和跳舞行为&#xff0c;具有结构简单&#xff0c;思路新颖&#xff0c;搜索速度快等优势。狐猴优化算法&#xff…

CrossOver2023(Mac电脑运行Windows软件)

CrossOver是一款可以让你在MAC上运行Windows应用的软件&#xff0c;CrossOver不像Parallels或VMware的模拟器&#xff0c;而是实实在在Mac OS X系统上运行的一个软件。CrossOvers能够直接在Mac上运行Windows软件与游戏&#xff0c;而不需虚拟机。兼容 Mojave 的 CrossOver Mac …

Spring Cloud学习(二)【Eureka注册中心】

文章目录 Eureka 注册中心Eureka 的作用 动手实践搭建 EurekaServer服务注册服务发现 Ribbon 负载均衡负载均衡原理IRule 接口&#xff08;负载均衡策略&#xff09;饥饿加载 Eureka 注册中心 服务调用出现的问题 不能采用硬编码服务消费者该如何获取服务提供者的地址信息&am…

微信小程序连接后端案例

setting.js 小Demo测试一下&#xff08;楼主这里使用的为PHP后台&#xff09;&#xff1a; 微信开发者工具中写入如下代码&#xff0c; // pages/setting/setting.js Page({/*** 页面的初始数据*/data: {demo:},ceshifuwuqi:function(){var that thiswx.request({url: http:/…

掌动智能性能压力测试优势有哪些

企业通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。本文将介绍性能压力测试的价值及主要优势! 一、性能压力测试的价值 1、评估系统能力&#xff1a;有助于参数的基准测试&#xff0c;可以度量系统的响应时间;还有助于检查系统是否可…

MySQL库的操作指南(上)

1.创建数据库 一般格式&#xff1a;create database (if not exists) database1_name,database2_name...... 特殊形式&#xff1a; create database charset harset_name collate collate_name 解释&#xff1a; 红色字是用户自己设置的名称charset&#xff1a;指定数据…

前端之Bootstrap框架

目录 【一】Bootstrap介绍 【二】Bootstrap引入 【1】CDN加速链接 【2】注意 【三】布局容器 【四】栅格系统 【五】栅格参数 【六】列偏移 【七】排版 标题 内联文本元素 对齐 改变大小写 引用 列表 【八】表格 基本实例 条纹状表格 带边框的表格 鼠标悬停…

集合贴1——人工智能技术

集合一下人工智能技术的文章&#xff1a; 基础课2——自然语言处理-CSDN博客文章浏览阅读412次。自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是计算机科学领域与人工智能领域中的一个重要方向&#xff0c;它研究能实现人与计算机之间用自然语言进…

STM32F103C8T6第三天:pwm、sg90、超声波、距离感应按键开盖震动开盖蜂鸣器

1. 定时器介绍1&#xff08;317.21&#xff09; 软件定时&#xff08;之前的定时方法&#xff09;&#xff08;软件延时&#xff09;缺点&#xff1a;不精确、占用CPU资源 void Delay500ms() //11.0592MHz {unsigned char i, j, k;_nop_();i 4;j 129;k 119;do{do{while (-…

三数之和(双指针)

15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三…

Python知识点——文件和数据格式化

目录 文件的打开 文件的打开模式 文件的路径 文件的关闭 文件内容读取 文件的读取 文件的写入 例题 文件的打开 文件的打开模式 文件打开模式描述‘r’只读模式&#xff0c;默认值&#xff0c;如果文件不存在&#xff0c;返回FileNotFoundErrorw覆盖写模式&#xff…

xray:漏洞扫描利器

简介 长亭科技旗下的一款网络安全漏洞扫描工具&#xff0c;用于检测和评估web应用程序的安全性。具有一下特点&#xff1a;检测速读快、检查范围广、代码质量高、高级可定制以及安全无危害。属于不开源的项目&#xff0c;用户直接下载xray的可执行文件&#xff0c;即可运行该工…