news 2026/5/9 14:30:14

LeetCode hot100-105从前序与中序遍历序列构造二叉树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode hot100-105从前序与中序遍历序列构造二叉树
class Solution { public: TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { if(preorder.empty()||inorder.empty()) return nullptr; vector<int> lpre,lin,rpre,rin; TreeNode* ans=new TreeNode(preorder[0]);; int flg=0; // 分割中序:左子树和右子树(不含根节点) for(int i=0;i<inorder.size();++i){ if(inorder[i]==preorder[0]){ flg=i; break; } } for(int i=0;i<flg;++i){ lin.push_back(inorder[i]); } for(int i=flg+1;i<inorder.size();++i){ rin.push_back(inorder[i]); } // 分割前序:根据左子树的大小 for(int i=1;i<=lin.size();++i){ lpre.push_back(preorder[i]); } for(int i = 1 + lin.size(); i < preorder.size(); ++i) { rpre.push_back(preorder[i]); } ans->left=buildTree(lpre,lin); ans->right=buildTree(rpre,rin); return ans; } };

class Solution { public: TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { if (preorder.empty() || inorder.empty()) return nullptr; // 根节点是前序遍历的第一个元素 int rootVal = preorder[0]; TreeNode* root = new TreeNode(rootVal); // 在中序遍历中找到根节点位置 int rootIndex = 0; for (int i = 0; i < inorder.size(); ++i) { if (inorder[i] == rootVal) { rootIndex = i; break; } } // 分割中序遍历 vector<int> leftInorder(inorder.begin(), inorder.begin() + rootIndex); vector<int> rightInorder(inorder.begin() + rootIndex + 1, inorder.end()); // 分割前序遍历 vector<int> leftPreorder(preorder.begin() + 1, preorder.begin() + 1 + leftInorder.size()); vector<int> rightPreorder(preorder.begin() + 1 + leftInorder.size(), preorder.end()); // 递归构建左右子树 root->left = buildTree(leftPreorder, leftInorder); root->right = buildTree(rightPreorder, rightInorder); return root; } };

class Solution { public: TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { return build(preorder, 0, preorder.size() - 1, inorder, 0, inorder.size() - 1); } private: TreeNode* build(vector<int>& preorder, int preStart, int preEnd, vector<int>& inorder, int inStart, int inEnd) { if (preStart > preEnd || inStart > inEnd) return nullptr; TreeNode* root = new TreeNode(preorder[preStart]); // 在中序中找到根节点 int rootIndex = inStart; while (inorder[rootIndex] != preorder[preStart]) rootIndex++; int leftSize = rootIndex - inStart; // 递归构建 root->left = build(preorder, preStart + 1, preStart + leftSize, inorder, inStart, rootIndex - 1); root->right = build(preorder, preStart + leftSize + 1, preEnd, inorder, rootIndex + 1, inEnd); return root; } };

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 14:29:15

Phi-3-mini-128k-instruct安全与合规性测试:对抗性提示与风险规避展示

Phi-3-mini-128k-instruct安全与合规性测试&#xff1a;对抗性提示与风险规避展示 最近&#xff0c;各种开源和闭源的大模型层出不穷&#xff0c;大家在惊叹其强大能力的同时&#xff0c;心里也难免会犯嘀咕&#xff1a;这东西用起来安全吗&#xff1f;会不会一不小心就说出些…

作者头像 李华
网站建设 2026/4/11 21:11:51

LangChain教程-、Langchain基础来

简介 AI Agent 不仅仅是一个能聊天的机器人&#xff08;如普通的 ChatGPT&#xff09;&#xff0c;而是一个能够感知环境、进行推理、自主决策并调用工具来完成特定任务的智能系统&#xff0c;更够完成更为复杂的AI场景需求。 AI Agent 功能 根据查阅的资料&#xff0c;agent的…

作者头像 李华
网站建设 2026/5/9 14:29:34

OpenClaw错误处理机制:Phi-3-vision识别失败自动重试方案

OpenClaw错误处理机制&#xff1a;Phi-3-vision识别失败自动重试方案 1. 为什么需要错误处理机制 上周我在用OpenClaw对接Phi-3-vision模型时&#xff0c;遇到了一个典型问题&#xff1a;当模型识别图片中的文字内容时&#xff0c;偶尔会出现识别失败或结果不准确的情况。这直…

作者头像 李华
网站建设 2026/4/12 21:57:03

某大型园区服务集团薪酬体系与总额管控优化项目成功案例纪实

——对标市场、分类施策&#xff0c;构建支撑国际化转型的薪酬激励新机制【客户行业】园区服务&#xff1b;物业管理&#xff1b;文旅服务&#xff1b;国有企业【问题类型】薪酬体系改革&#xff1b;薪酬总额管控【客户背景】某大型园区服务集团隶属于某大型央企&#xff0c;位…

作者头像 李华
网站建设 2026/4/15 13:29:19

一文学习 工作流开发 BPMN、 Flowable钾

一、什么是requests&#xff1f; requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你&#xff1a; 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景&#xff1a; …

作者头像 李华
网站建设 2026/4/17 10:31:30

拆穿名词诈骗!用大白话理解晦涩难懂的AI概念欠

1. 架构背景与演进动力 1.1 从单体到碎片化&#xff1a;.NET 的开源征程 在.NET Framework 时代&#xff0c;构建系统主要围绕 Windows 操作系统紧密集成&#xff0c;采用传统的封闭式开发模式。然而&#xff0c;随着.NET Core 的推出&#xff0c;微软开启了彻底的开源与跨平台…

作者头像 李华