143. 最长同值路径(卡码网周赛第二十五期(23年B站笔试真题))

news2025/1/13 9:00:36

题目链接
143. 最长同值路径(卡码网周赛第二十五期(23年B站笔试真题))

题目描述

给定一个二叉树的 root ,返回最长的路径的长度,这个路径中的每节点具有相同值。这条路径可以经过也可以不经过根节点。两个节点之间的路径长度 由它们之间的边数表示。
树的节点数的范围是 [0,10^4] -1000 <= Node.val <= 1000
树的深度将不超过 18 层

输入

输入共两行,第一行是一个整数 n,表示第二行的字符串数。
第二行包含 n 个字符串,空格隔开,数字的字符串代表该节点存在,并且值为数字,null 代表是一个空结点。

输出

输出一个正整数,代表最长路径长度。

样例1输入

7
5 4 5 1 1 null 5

样例1输出

2

样例1提示

通过层序遍历构建二叉树如下:
在这里插入图片描述

样例2输入

9
7 2 8 null 4 null 6 4 5

样例2输出

1

样例2提示

通过层序遍历构建二叉树如下:
在这里插入图片描述

题解1(C++版本)

#include<bits/stdc++.h>
using namespace std;
 
const int N = 1e4 + 10;
 
int n, val[N]; // val[i]表示编号为i的节点的值
char s[10];

vector<int> edge[N];
int dp[N][2]; // dp[i][0/1]表示根节点编号为i,沿左/右子树这边走的最长路径长度
 
int ans = 0;

queue<int> q; 
void dfs(int idx){
    int sz = edge[idx].size();
    if(sz >= 1){ // 存在左孩子
        int leftIdx = edge[idx][0];
        dfs(leftIdx);
        if(val[idx] == val[leftIdx]) // 左孩子的值等于根节点的值
        dp[idx][0] = max(dp[leftIdx][0], dp[leftIdx][1]) + 1;
        
    }
    if(sz >= 2){ // 存在右孩子
        int rightIdx = edge[idx][1];
        dfs(rightIdx); 
        if(val[idx] == val[rightIdx]) // 右孩子的值等于根节点的值
        dp[idx][1] = max(dp[rightIdx][1], dp[rightIdx][0]) + 1;
    }
    
    ans = max(ans, dp[idx][0] + dp[idx][1]);
}
 
int main(){
    scanf("%d", &n);
    memset(dp, 0, sizeof dp);
    q.push(0);
    for(int i = 1; i <= n; i++){
        int now = q.front(); q.pop(); // 注意是按照层序遍历的方式建树的
        scanf("%s", s);
        if(strcmp(s, "null") != 0) {
            int n = strlen(s);
            int num = 0;
            for(int j = 0; j < n; j++){
                num = num * 10 + s[j] - '0';
            }
            val[i] = num;
            
            edge[now].push_back(i);
            q.push(i);
        }
        if(i > 1&& (i + 1 <= n)){ // 根节点只有一个
            i++;
            scanf("%s", s);
            if(strcmp(s, "null") != 0) {
                int n = strlen(s);
                int num = 0;
                for(int j = 0; j < n; j++){
                    num = num * 10 + s[j] - '0';
                }
                val[i] = num;
                
                edge[now].push_back(i);
                q.push(i);
            }
        }
       
    }

    dfs(1);
    printf("%d\n", ans); // ans表示的最长路径上的节点数,边数=节点数-1
    return 0;
}

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

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

相关文章

Wifi贴码推广怎么加入?如何提高收益

自Wifi贴码鼻祖微.火于2021年6月推出全球第一张共享WIFI贴码以来&#xff0c;wifi贴码项目便一直是有入局意向的创业者们的重点关注对象之一。在此背景下&#xff0c;以wifi贴码推广怎么加入为代表的问题更是成为了相关创业者社群中的讨论热点。 事实上&#xff0c;对于尚未入局…

端侧智能为什么有前途

年前陆续和很多小伙伴聊过端侧智能的价值&#xff0c;吹捧的、贬低的都有&#xff0c;各自也都有自己的理由。这里&#xff0c;谨作为利益相关方&#xff0c;分享一下自己对端侧智能的看法&#xff0c;尝试回答端侧智能有没有用、为什么有用和该怎么用的问题。文章不含技术干货…

Java BigInteger 类

目录 BigInteger 1. 如何获取一个BigInteger类型的对象&#xff1f; &#xff08;1&#xff09;构造方法 &#xff08;2&#xff09;静态方法 2. 常用方法 BigInteger 可以用来表示很大很大的数&#xff0c;有多大都可以。通过创建对象调用相应的方法。详见&#xff1a;…

2024年高职云计算实验室建设及云计算实训平台整体解决方案

随着云计算技术的飞速发展&#xff0c;高职院校亟需构建一个与行业需求紧密结合的云计算实验室和实训平台。以下是针对2024年高职院校云计算实验室建设的全面解决方案。 1、在高职云计算实验室的建设与规划中&#xff0c;首要任务是立足于云计算学科的精准定位&#xff0c;紧密…

文章范冰冰高调官宣入驻TikTok!“跨境“的风最终刮到了娱乐圈

在当前的跨境电商行业&#xff0c;我们正见证一个“多元化”时代的到来。特别是最近从国内聚光灯中消失好几年的范冰冰&#xff0c;迅速成为了跨境电商行业的焦点。 范冰冰宣布正式入驻 TikTok&#xff0c;希望为自己的美妆品牌 Fan Beauty Diary&#xff0c;铺开一条新路。 …

【逆向基础】十、工具分享之DIE(Detect It Easy)

一、简介 DIE&#xff08;Detect It Easy&#xff09;是一款可以轻松检测PE文件的程序&#xff1b;其主要作用是查壳&#xff0c;并将pe文件的内容解析出来&#xff0c;包括PE文件中包含的导入函数、导出函数的名称及地址&#xff0c;入口函数地址等&#xff0c;是技术人员分析…

A Low-Latency Metadata Service for Geo-Distributed File Systems——论文泛读

Journal of Systems Architecture 2022 Paper 分布式元数据论文阅读笔记整理 问题 地理分布式文件系统已被web服务广泛使用&#xff0c;但访问不同地理位置的服务器延迟不同&#xff0c;当用户访问远程服务器时&#xff0c;将出现不可容忍的服务延迟。目前的大多数分布式文件…

华为认证试题有题库吗?华为认证题库怎么领取?

在竞争激烈的就业环境下&#xff0c;若你拥有华为认证将可以提高个人综合能力&#xff0c;更好的适应行业变化。相信大家都有听说过想考取华为初级认证并不困难&#xff0c;因为它有专门的题库供考生备考。 那么&#xff0c;到底华为认证试题有题库吗?华为认证题库要怎么领取…

Spring中的适配器模式和策略模式

1. 适配器模式的应用 1.1适配器模式&#xff08;Adapter Pattern&#xff09;的原始定义是&#xff1a;将一个类的接口转换为客户期望的另一个接口&#xff0c;适配器可以让不兼容的两个类一起协同工作。 1.2 AOP中的适配器模式 在Spring的AOP中&#xff0c;使用Advice&#…

DP V2.1a标准学习(二)

三、线材&连接器要求 1.线材分类 线材按照支持速率的不同,划分为不同规格,具体如下: DP和USB线材混用矩阵,也就是不同规格的线材对应的支持传输速率和传输类型,如下: 2.线材和连接器组件分类 线材+连接器组件分类与DP V1.4类似,不过型号更多了,如下: 也支持2种…

ss工具dump出vsock 端口号异常分析

端口冲突时&#xff0c;会出现bind fail异常&#xff0c;这时可以用ss --vsock -pl命令dump出所有listen状态的vsock,但实际发现传入的9000端口&#xff0c;dump出来却是10275&#xff0c;如下图&#xff1a; 难道是内核把端口改了&#xff1f;分析内核态源码&#xff0c;ss最终…

SW - 将面导出为dxf

文章目录 SW - 将面导出为dxf概述笔记原点问题END SW - 将面导出为dxf 概述 在做PCB板框. 以前做过一个笔记&#xff0c;用autoCAD来制作导出dxf(cadence SPB17.4 - 用autoCAD2022画一个PCB板框)。 不喜欢用autoCAD&#xff08;相对麻烦&#xff09;, 还是喜欢用SW&#xff0…

js 中 new Worker 报错 Failed to construct ‘Worker‘

new Worker("worker.js");运行多线程 Web Worker 的时候报错 Uncaught DOMException: Failed to construct ‘Worker’ 原因是浏览器不允许通过本地文件访问使用Web Worker。 解决方法&#xff1a; 将项目部署到服务器上或者用Node起本地服务访问项目

从本地到全局:基于图的RAG方法进行查询聚焦原理摘要

摘要 使用检索增强生成&#xff08;RAG&#xff09;从外部知识源检索相关信息&#xff0c;使大型语言模型&#xff08;LLMs&#xff09;能够回答有关私有和/或以前未见过的文档集合的问题。然而&#xff0c;当针对整个文本文档库提出全局问题时&#xff0c;例如“数据集中的主…

45、tomcat+课后实验

tomcat 1、tomcat tomcat和php一样&#xff0c;都是用来处理动态页面的。 tomcat也可以作为web应用服务器&#xff0c;开源的。 php .php tomcat .jsp nginx .html tomcat 是用Java代码写的程序&#xff0c;运行的是Java的web应用程序。 tomcat的特点和功能&#xff1a…

推荐算法——NDCG归一化折扣累积增益

NDCG&#xff0c;全称为归一化折扣累积增益&#xff08;Normalized Discounted Cumulative Gain&#xff09;&#xff0c;是一种常用的衡量搜索引擎和推荐系统结果质量的指标。NDCG考虑了结果的相关性和结果的排名位置&#xff0c;其值在0到1之间&#xff0c;值越大表示搜索结果…

解码RAG:智谱 RAG 技术的探索与实践

智谱 AI 长期专注于大模型技术的研究&#xff0c;从 23 年开始&#xff0c;大模型受到了各行各业的关注&#xff0c;智谱 AI 也深度的参与到各种场景的大模型应用的建设当中&#xff0c;积累了丰富的模型落地应用的实战经验&#xff0c;其中 RAG 类应用占据了较大的比重。 所谓…

【前端项目笔记】10 项目优化上线

项目优化上线 目标&#xff1a;优化Vue项目部署Vue项目&#xff08;上线提供使用&#xff09; 项目优化 项目优化策略&#xff1a; 生成打包报告&#xff1a;根据生成的报告发现问题并解决第三方库启用CDN&#xff1a;提高首屏页面的加载效率Element-UI组件按需加载路由懒加…

直观易用的大模型开发框架LangChain,你会了没?

目录 简介基本组件小试牛刀关于沟通代码案例&#xff1a;调用Embedding、Completion、Chat Model总结 目前LangChain框架在集团大模型接入手册中的学习案例有限&#xff0c;为了让大家可以快速系统地了解LangChain大模型框架并开发&#xff0c;产出此文章。本文章包含了LangCha…

SAP各代增强介绍与查找,这一篇就够了

目录 1.前言&#xff1a; 2.什么是增强&#xff1a; 3.增强类型&#xff1a; 4.增强查找方式&#xff1a; USER-EXIT的快速查找 ①基于源码查找 ②基于SPRO查找 ③通过SAT运行分析进行查找 Customer-Exit的快速查找 ①使用MODX_FUNCTION_ACTIVE_CHECK查找 ②使用/H …