发布时间:2026/6/13 13:22:32
leetcode 2196. 根据描述创建二叉树 中等
给你一个二维整数数组descriptions其中descriptions[i] [parenti, childi, isLefti]表示parenti是childi在二叉树中的父节点二叉树中各节点的值互不相同。此外如果isLefti 1那么childi就是parenti的左子节点。如果isLefti 0那么childi就是parenti的右子节点。请你根据descriptions的描述来构造二叉树并返回其根节点。测试用例会保证可以构造出有效的二叉树。示例 1输入descriptions [[20,15,1],[20,17,0],[50,20,1],[50,80,0],[80,19,1]]输出[50,20,80,15,17,19]解释根节点是值为 50 的节点因为它没有父节点。 结果二叉树如上图所示。示例 2输入descriptions [[1,2,1],[2,3,0],[3,4,1]]输出[1,2,null,null,3,4]解释根节点是值为 1 的节点因为它没有父节点。 结果二叉树如上图所示。提示1 descriptions.length 10^4descriptions[i].length 31 parenti, childi 10^50 isLefti 1descriptions所描述的二叉树是一棵有效二叉树分析首先确定根节点即没有父节点的节点。可以用一个哈希表记录所有出现过的子节点。遍历 description 数组标记所有 child。再遍历一次找到第一个 parent 不在子节点集合中的节点它就是根节点。接着构建节点映射关系用一个哈希表存储父节点对应的描述索引便于快速找到父节点的所有子节点信息在 description 数组中的位置。最后通过层次遍历构建二叉树。首先根节点进队每次取出一个节点p根据之前存储的父节点索引映射找到当前节点 p 的值对应的所有 description 位置根据 isLeft 决定挂在左孩子还是右孩子。如果子节点本身也是其他节点的父节点则将其加入队列继续处理。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: TreeNode* createBinaryTree(vectorvectorint descriptions) { int ndescriptions.size(); mapint,intmp; mapint,vectorintmp_p,mp_c; for(int i0;in;i) mp_p[descriptions[i][0]].push_back(i),mp_c[descriptions[i][1]].push_back(i),mp[descriptions[i][1]]1; int index0,cnt1,f1; for(int i0;inf;i) if(mp[descriptions[i][0]]0) indexi,f0; TreeNode* root(TreeNode*)malloc(sizeof(TreeNode));root-leftroot-rightNULL; root-valdescriptions[index][0]; queueTreeNode*que;que.push(root); while(!que.empty()) { TreeNode *pque.front();que.pop(); int lenmp_p[p-val].size(); for(int i0;ilen;i) { TreeNode *q(TreeNode*)malloc(sizeof(TreeNode));;q-leftq-rightNULL; q-valdescriptions[mp_p[p-val][i]][1]; if(descriptions[mp_p[p-val][i]][2]1) p-leftq; else p-rightq; if(mp_p[q-val].size())que.push(q); } } return root; } };

相关新闻

3个步骤彻底告别电脑噪音!Windows终极风扇控制软件FanControl完全指南 [特殊字符]
2026/6/8 14:56:56

3个步骤彻底告别电脑噪音!Windows终极风扇控制软件FanControl完全指南 [特殊字符]

3个步骤彻底告别电脑噪音!Windows终极风扇控制软件FanControl完全指南 🚀 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://g…

阅读更多
免费Windows风扇控制神器:FanControl完全使用指南
2026/6/14 11:44:51

免费Windows风扇控制神器:FanControl完全使用指南

免费Windows风扇控制神器:FanControl完全使用指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fan…

阅读更多
终极免费QQ空间备份工具:GetQzonehistory完整指南
2026/6/11 14:42:19

终极免费QQ空间备份工具:GetQzonehistory完整指南

终极免费QQ空间备份工具:GetQzonehistory完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间里的青春记忆会随着时间流逝而消失?那些记录着…

阅读更多
天地图、OpenStreetMap、ArcGIS Online,Web地图瓦片服务(WMTS/TMS/XYZ)到底怎么选?一个前端开发者的实战踩坑笔记
2026/6/14 10:57:47

天地图、OpenStreetMap、ArcGIS Online,Web地图瓦片服务(WMTS/TMS/XYZ)到底怎么选?一个前端开发者的实战踩坑笔记

天地图、OpenStreetMap与ArcGIS Online地图服务选型指南:前端开发避坑实战第一次在项目中集成第三方地图服务时,我被各种术语淹没了——WMTS、TMS、XYZ这些协议有什么区别?天地图的4490坐标系该如何处理?为什么OpenLayers加载的OS…

阅读更多
Blender MMD Tools架构解析:高性能模型转换与实时渲染集成
2026/6/14 10:57:47

Blender MMD Tools架构解析:高性能模型转换与实时渲染集成

Blender MMD Tools架构解析:高性能模型转换与实时渲染集成 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools …

阅读更多
浏览器自动化中的Cookie和Session管理最佳实践
2026/6/14 10:57:47

浏览器自动化中的Cookie和Session管理最佳实践

在现代浏览器自动化测试、数据采集、RPA 流程等场景中,Cookie 和 Session 管理是决定自动化任务成败的核心技术之一。正确的管理策略不仅能显著提升脚本的稳定性和执行效率,还能有效绕过身份验证机制、减少反爬检测风险、降低服务器负载。本文将系统介绍…

阅读更多
AMD Ryzen处理器调试神器:5分钟上手SMUDebugTool,轻松解锁隐藏性能
2026/6/14 10:57:47

AMD Ryzen处理器调试神器:5分钟上手SMUDebugTool,轻松解锁隐藏性能

AMD Ryzen处理器调试神器:5分钟上手SMUDebugTool,轻松解锁隐藏性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table.…

阅读更多
用Playwright拦截和修改网络请求:不只是抓包那么简单
2026/6/14 10:57:47

用Playwright拦截和修改网络请求:不只是抓包那么简单

在 Web 开发和测试领域,抓包工具如 Fiddler、Charles 和 Chrome DevTools 早已成为开发者的标配。它们能让我们查看网络请求和响应内容,帮助定位问题。但当我们需要更深度的网络控制 —— 比如自动化修改请求、模拟各种异常场景、与 UI 操作无缝集成时&a…

阅读更多
LLM信息抽取实战:从认知重构到结构化输出的七道关卡
2026/6/14 9:57:47

LLM信息抽取实战:从认知重构到结构化输出的七道关卡

1. 这不是“调用API就完事”的信息抽取——它是一场对LLM底层认知能力的系统性拆解你有没有试过让大模型从一段会议纪要里抽取出“谁在什么时间、向谁、提出了哪项具体建议”?结果模型要么漏掉关键角色,要么把“建议”和“结论”混为一谈,甚至…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/14 0:57:30

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/14 0:57:30

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
GIT修改用户名
2026/6/13 10:50:23

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/13 15:45:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/13 11:10:35

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多