LeetCode(106) Construct Binary Tree from Inorder and Postorder Traversal
2024-09-08 09:00:35
题目
Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
Show Tags
Show Similar Problems
分析
跟上一道题同样的道理。
AC代码
class Solution {
public:
template <typename Iter>
TreeNode* make(Iter in_begin, Iter in_end , Iter post_begin, Iter post_end ) {
if (post_begin == post_end || in_begin == in_end)
return NULL;
int size = post_end - post_begin;
//后序遍历最后一个节点为树的根节点
TreeNode *root = new TreeNode(*(post_begin + size-1));
//在中序遍历结果中查找根节点
Iter iter = find(in_begin, in_end, *(post_begin + size - 1));
//计算左子树个数
int count = iter - in_begin;
if (iter != in_end)
{
//则在inOrder中(0 , count-1)为左子树中序遍历结果(count+1,size-1)为右子树的中序遍历序列
//在preOrder中(0,count-1)为左子树前序遍历结果(count,size-2)为右子树前序遍历结果
root->left = make(in_begin, iter , post_begin, post_begin + count);
//构造右子树
root->right = make(iter + 1, in_end ,post_begin + count, post_begin + size - 1);
}
return root;
}
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
if (inorder.empty() || postorder.empty())
return NULL;
return make(inorder.begin(), inorder.end() ,postorder.begin(), postorder.end());
}
};
最新文章
- 转 jQuery 中bind(),live(),delegate(),on() 区别
- entrar en su zapatilla de deporte en este lugar
- gulp系列文章一 fis vs grunt vs gulp,为什么要是gulp呢?
- mysql启动报错:Starting MySQL...The server quit without updating PID file
- Codeforces Round #151 (Div. 2)
- LibSVM学习(四)——逐步深入LibSVM 转
- JavaScript学习 常用的对话框函数
- Teclast/台电 P98HD四核测评9.7寸台电P98HD 评测体验 (转载)
- 10s后自动跳转
- wamp配置sendmail发送邮件
- Java 练习(多态,instanceof)
- 玩转SSH(四):Struts + Spring + MyBatis
- 如何兼容所有Android版本选择照片或拍照然后裁剪图片--基于FileProvider和动态权限的实现
- 用python模拟登录(解析cookie + 解析html + 表单提交 + 验证码识别 + excel读写 + 发送邮件)
- PAT1029:Median
- ButterKnife 牛油刀使用
- 【Topcoder 1879】Scheduling
- Vfox数据库导出EXCEL,含有备注型子段
- vim中文乱码问题
- selenium之批量执行测试用例
热门文章
- C# 面向对象之继承后初始化顺序
- pwnhub 相对路径覆盖
- [HDU1595] find the longest of the shortest
- Java EE学习笔记(七)
- 牛客网Java刷题知识点之什么是JSP的3大常用指令、JSP的6大哪些动作、JSP中include指令和include动作有什么区别
- 05.Javascript——入门函数
- 说说JVM原理?内存泄漏与溢出的区别?何时产生内存泄漏?
- uvm_reg_item——寄存器模型(五)
- 使用python模拟登陆百度
- UVA116 Unidirectional TSP 单向TSP