news 2026/5/3 23:34:09

leetcode 889. Construct Binary Tree from Preorder and Postorder Traversal 根据前序和后序遍历构造二叉树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 889. Construct Binary Tree from Preorder and Postorder Traversal 根据前序和后序遍历构造二叉树

Problem: 889. Construct Binary Tree from Preorder and Postorder Traversal 根据前序和后序遍历构造二叉树

前序遍历是【根左右】,后序遍历是【左右根】,所以preorder第一个一定是根节点,postorder最后一个一定是根节点,两者一定相等,postorder倒数第二个一定是右子树的根节点,所以可以根据postorder倒数第二个将前序遍历划分开来,划分成左右子树,前序遍历确定好右子树节点个数以后就可以将后序遍历划分开

Code

/** * 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: int preL, postL; TreeNode* construct(int preLeft, int preRight, int postLeft, int postRight, vector<int>& preorder, vector<int>& postorder) { if(preLeft > preRight || postLeft > postRight) return nullptr; TreeNode* root = new TreeNode; root->val = preorder[preLeft]; if(preLeft==preRight || postLeft == postRight) return root; int k = preLeft + 1; while(k <= preL && preorder[k]!=postorder[postRight-1]) k++; root->left = construct(preLeft+1, k-1, postLeft, postRight - (preRight - k + 1)-1, preorder, postorder); root->right = construct(k, preRight, postRight - (preRight - k + 1), postRight-1, preorder, postorder); return root; } TreeNode* constructFromPrePost(vector<int>& preorder, vector<int>& postorder) { TreeNode* root = nullptr; preL = preorder.size()-1; postL = postorder.size()-1; root = construct(0, preL, 0, postL, preorder, postorder); return root; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 4:27:11

大米电视 6.6.9| 内含优质频道,港台高清不卡顿,超2000个直播频道

大米电视TV版是一款操作简便且资源丰富的电视播放软件&#xff0c;专为家庭机顶盒设计。该软件拥有超2000个直播频道&#xff0c;涵盖央视频道、地方频道以及香港和台湾的频道等。所有频道源质量上乘&#xff0c;能为用户带来秒播且不卡顿的观看体验。无论是热门影视剧、体育赛…

作者头像 李华
网站建设 2026/5/3 6:45:26

Java 状态机详解 - 三种状态机实现方式优雅消灭 if-else 嵌套

Java 状态机详解&#xff1a;三种实现方式优雅消灭 if-else 嵌套 在 Java 开发中&#xff0c;状态机&#xff08;Finite State Machine&#xff0c;FSM&#xff09;是一种经典的设计模式&#xff0c;用于管理对象的有限状态和状态之间的转换。它特别适合处理复杂业务逻辑&…

作者头像 李华
网站建设 2026/5/3 8:53:24

Python:cell 对象

在 Python 的执行模型中&#xff0c;闭包变量并不是简单地存放在某个函数或帧的局部命名空间中。为了在多层嵌套函数之间安全、稳定地共享运行期状态&#xff0c;Python 在对象模型中引入了一种专门的中介对象——cell 对象&#xff08;cell object&#xff09;。cell 对象并不…

作者头像 李华
网站建设 2026/5/3 7:17:28

SSM计算机毕设之基于ssm的城市生活e家平台的设计与开发在线报修与维修反馈 在线评价(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/3 4:36:23

Java面试通关指南(六):数据库王者之战:MySQL深度优化与分布式实践

&#x1f525; 前言 在互联网企业的技术面试中&#xff0c;MySQL是必考的重中之重。掌握MySQL不仅是基础&#xff0c;更是区分普通开发者与高级工程师的关键。本文将带你深入MySQL内核&#xff0c;探索从单机优化到分布式架构的完整知识体系。 一、索引背后的B树秘密 面试高…

作者头像 李华
网站建设 2026/5/3 7:31:25

P0904AK桌面接口模块

P0904AK 桌面接口模块产品特点开头&#xff1a; P0904AK 桌面接口模块是一款用于工业自动化控制系统的接口扩展单元&#xff0c;主要提供现场设备与主控系统之间的便捷连接与互动接口&#xff0c;旨在简化设备接入、提高系统集成效率。产品特点&#xff1a;提供多种常用接口类型…

作者头像 李华