leetcode 106从中序与后序遍历序列构造二叉树
时间:2021-09-04
本文章向大家介绍leetcode 106从中序与后序遍历序列构造二叉树,主要包括leetcode 106从中序与后序遍历序列构造二叉树使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
根据一棵树的中序遍历与后序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
例如,给出
中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]
返回如下的二叉树:
链接:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal
这个题目跟105题目的思路是一样的,不同的是这里使用的后续遍历序列,那么把后续反序之后就是:中序遍历左右子树交换的结果
public TreeNode buildTree(int[] inorder, int[] postorder) {
if(inorder.length==0)
return null;
HashMap<Integer,Integer> inorderMap=new HashMap<>();
for(int i=0;i<inorder.length;i++)
{
inorderMap.put(inorder[i],i);
}
return posBuild(inorder,postorder,inorderMap,0,inorder.length-1,0,postorder.length-1);
}
public TreeNode posBuild(int[] inorder, int[] postorder,HashMap<Integer,Integer> inorderMap,int inorderLeft,int inorderRight,int postLeft,int postRight)
{
if(postLeft>postRight)
return null;
int rootIndex=postRight;
int inorderRottIndex=inorderMap.get(postorder[rootIndex]);
TreeNode root=new TreeNode(postorder[rootIndex]);
int rightCount=inorderRight-inorderRottIndex;
root.right=posBuild(inorder,postorder,inorderMap,inorderRottIndex+1,inorderRight,postRight-rightCount,postRight-1);
root.left=posBuild(inorder,postorder,inorderMap,inorderLeft,inorderRottIndex-1,postLeft,postRight-rightCount-1);
return root;
}
原文地址:https://www.cnblogs.com/AI-Creator/p/15225921.html
- 走进科学:酒店保险箱真的保险么?
- 利用xmlrpc.php对WordPress进行暴力破解攻击
- .Net中如何操作IIS
- Havex:以工控设备为狩猎目标的恶意软件
- 大规模异常滥用检测:基于局部敏感哈希算法——来自Uber Engineering的实践
- 浅谈php安全
- 在统一的分析平台上构建复杂的数据管道
- 隐藏在注册表的恶意软件 – Poweliks
- 数千万WordPress和Drupal站点存在DDoS风险
- 利用基因突变和K均值预测地区种群
- 缓冲区溢出攻击初学者手册(更新版)
- 在Python机器学习中如何索引、切片和重塑NumPy数组
- HelloWorld,我的第一趟旅程出发点
- Android OpenGL开发实践 - GLSurfaceView对摄像头数据的再处理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python中format函数如何使用
- keras得到每层的系数方式
- 解决TensorFlow调用Keras库函数存在的问题
- php判断电子邮件是否正确方法
- python db类用法说明
- python中wheel的用法整理
- 使用Keras训练好的.h5模型来测试一个实例
- python中查看.db文件中表格的名字及表格中的字段操作
- Ubuntu 16.04中Laravel5.4升级到5.6的步骤
- PHP SESSION机制的理解与实例
- Yii支持多域名cors原理的实现
- PHP实现的pdo连接数据库并插入数据功能简单示例
- php基于Redis消息队列实现的消息推送的方法
- mongodb和php的用法详解
- php多进程模拟并发事务产生的问题小结