讲师中心 微信公众号
AI工具推荐 视频效率加速

利用字典构建层级树

风晨大大_1432

风晨大大_1432

发布时间:2025-05-26 10:40:02

|

367人浏览过

|

来源于php中文网

原创

利用字典构建层级树

1、问题背景

给定一个键值对字典,键是网页名称,值是网页内容。网页内容由其他网页名称组成,这些网页名称用空格分隔。目标是对于给定的网页名称,找到从首页到该网页的所有路径。

例如,给定以下字典:

{
  'section-a.html': {'contents': 'section-b.html section-c.html section-d.html'},
  'section-b.html': {'contents': 'section-d.html section-e.html'},
  'section-c.html': {'contents': 'product-a.html product-b.html product-c.html product-d.html'},
  'section-d.html': {'contents': 'product-a.html product-c.html'},
  'section-e.html': {'contents': 'product-b.html product-d.html'},
  'product-a.html': {'contents': ''},
  'product-b.html': {'contents': ''},
  'product-c.html': {'contents': ''},
  'product-d.html': {'contents': ''}
}

对于给定的网页名称 'product-d.html',应找到以下路径:

'section-a.html > section-b.html > section-e.html > product-d.html''section-a.html > section-c.html > product-d.html''section-a.html > section-d.html > product-c.html > product-d.html'

Handsfree Windows Control
Handsfree Windows Control

通过 handsfree-windows CLI控制 Windows 本机应用 (UIA) 和浏览器 (Playwright) 的引导技能,用于自动化或测试桌面应用。

下载

2、解决方案

为了解决这个问题,可以采用以下步骤:

  • 将字典转换成一个更易于使用的形式,即把网页名称作为键,网页内容作为值。
  • 根据网页内容构建一个父网页字典,其中键是网页名称,值是该网页的父网页列表。
  • 对于给定的网页名称,从父网页字典中找到其父网页,并重复此步骤,直到找到首页。
  • 将从首页到给定网页的所有路径存储在一个列表中。

以下代码实现了上述步骤:

function findPathsToItem(item, pages) {
  /**
   * Finds all paths from the home page to a given item.
   * @param {string} item - The item to find paths to.
   * @param {Object} pages - A dictionary of page names to page contents.
   * @returns {Array} A list of paths from the home page to the given item.
   */
  // Convert the dictionary to a more usable form.
  let pageContents = {};
  for (let [page, contents] of Object.entries(pages)) {
    pageContents[page] = new Set(contents.contents.split(' '));
  }
<p>// Build a parent page dictionary.
let parentPages = {};
for (let page in pageContents) {
parentPages[page] = [];
for (let parentPage in pageContents) {
if (pageContents[parentPage].has(page)) {
parentPages[page].push(parentPage);
}
}
}</p><p>// Find all paths from the home page to the given item.
let paths = [];
let partialPaths = [[item]];
while (partialPaths.length > 0) {
let path = partialPaths.pop();
if (parentPages[path[path.length - 1]].length > 0) {
// Add as many partial paths as open from here.
for (let parentPage of parentPages[path[path.length - 1]]) {
partialPaths.push([...path, parentPage]);
}
} else {
// We've reached the home page.
paths.push(path.reverse());
}
}
return paths;
}</p><p>// Example usage
let pages = {
'section-a.html': {'contents': 'section-b.html section-c.html section-d.html'},
'section-b.html': {'contents': 'section-d.html section-e.html'},
'section-c.html': {'contents': 'product-a.html product-b.html product-c.html product-d.html'},
'section-d.html': {'contents': 'product-a.html product-c.html'},
'section-e.html': {'contents': 'product-b.html product-d.html'},
'product-a.html': {'contents': ''},
'product-b.html': {'contents': ''},
'product-c.html': {'contents': ''},
'product-d.html': {'contents': ''}
};</p><p>let paths = findPathsToItem('product-d.html', pages);
console.log(paths);

输出结果:

[
['section-a.html', 'section-b.html', 'section-e.html', 'product-d.html'],
['section-a.html', 'section-c.html', 'product-d.html'],
['section-a.html', 'section-d.html', 'product-c.html', 'product-d.html']
]

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

相关专题

更多
PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

0

2026.10.22

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

0

2026.10.22

剧云故事大纲与分场规划教程
剧云故事大纲与分场规划教程

本专题讲解剧云梗概与多级大纲功能,覆盖全局、分集、分场结构生成,以及主线冲突、剧情节点和场次顺序调整。

0

2026.10.22

VibeKnow PPT讲解视频教程汇总
VibeKnow PPT讲解视频教程汇总

本专题介绍VibeKnow PPT讲解模式的素材准备、旁白生成、页面节奏、画面呈现与导出设置,适合课程和培训场景。

0

2026.10.22

VibeKnow PDF转视频教程合集
VibeKnow PDF转视频教程合集

本专题围绕VibeKnow的PDF转视频功能,讲解文件准备、内容解析、脚本生成、重点可视化及配音字幕检查方法。

0

2026.10.22

二狗PPT模板与视觉设计
二狗PPT模板与视觉设计

本专题介绍二狗PPT的职场模板、主题风格与页面版式,覆盖模板切换、色彩选择、内容匹配和正式汇报场景下的视觉优化方法。

0

2026.10.22

php漏洞修复方法
php漏洞修复方法

PHP漏洞聚合专题,持续整理PHP最新高危漏洞、CVE安全预警、受影响版本、自查命令及修复方案,覆盖PHP-FPM、Docker、Ubuntu与Linux服务器环境,帮助开发者快速完成漏洞排查、版本升级和安全加固。

20

2026.10.22

二狗PPT入门与基础操作
二狗PPT入门与基础操作

本专题整理二狗PPT从官网进入、输入主题、生成大纲到制作成稿的基础操作,帮助新手掌握AI一键生成职场PPT的完整流程。

0

2026.10.22

讯飞绘文AI配图与绘图模型合集
讯飞绘文AI配图与绘图模型合集

本专题讲解讯飞绘文AI配图与绘图2.0 Pro,覆盖提示词、画面比例、参考图、风格选择及图片优化,帮助用户制作匹配内容的视觉素材。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Conan 2 安装指南
Conan 2 安装指南

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn