题目
- 给你一棵 树(即一个连通、无向、无环图),根节点是节点 0 ,这棵树由编号从 0 到 n - 1 的 n 个节点组成。用下标从 0 开始、长度为 n 的数组 parent 来表示这棵树,其中 parent[i] 是节点 i 的父 节点,由于节点 0 是根节点,所以 parent[0] == -1 。
另给你一个字符串 s ,长度也是 n ,其中 s[i] 表示分配给节点 i 的字符。
请你找出路径上任意一对相邻节点都没有分配到相同字符的 最长路径 ,并返回该路径的长度。

题解:dfs
- 根据数组存储孩子节点,先求孩子的最长路径,再求当前节点的最长路径,在递归过程中更新最长路径
var longestPath = function(parent, s) {
const n = parent.length;
const heir = new Array(n).fill(0).map(() => []);
let ans = 0;
for (let i = 1; i < n; i++) {
heir[parent[i]].push(i);
}
const dfs = (i) => {
let maxLen = 0;
for (let j of heir[i]) {
let len = dfs(j) + 1;
if (s[i] !== s[j]) {
ans = Math.max(ans, maxLen + len);
maxLen = Math.max(len, maxLen);
}
}
return maxLen;
}
dfs(0);
return ans + 1;
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人