当前位置:网站首页>Come n times - 07. Rebuild the binary tree
Come n times - 07. Rebuild the binary tree
2022-07-31 09:20:00 【Qin feather】
专栏前言:
本专栏主要是算法训练,目的很简单.在掌握基本的java知识后,学习最重要的算法知识,在学习之前首先要对自身有一定的理解,如果不知道怎么做欢迎来私聊.
算法的过程很枯燥,但是也很特别,不断地刷题,不断地分享才会越来越好,给别人讲明白才是真正学会了.在分享中学会知识.
坚持就是胜利~~~
题目描述:
输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点.
假设输入的前序遍历和中序遍历的结果中都不含重复的数字.
示例1:
Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
Output: [3,9,20,null,null,15,7]
示例2:
Input: preorder = [-1], inorder = [-1]
Output: [-1]
限制:
0 <= 节点个数 <= 5000
解题1:
I have written my thoughts on this question below,more practice
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
if(preorder == null || preorder.length == 0){
return null;
}
//根节点
TreeNode root = new TreeNode(preorder[0]);
Deque<TreeNode> stack = new LinkedList<>();
//Push the root node onto the stack
stack.push(root);
//Define an inorder traversal subscript
int inorderIndex = 0;
//循环前序遍历
for(int i = 1; i < preorder.length; ++i){
//The value of the preorder traversal
int preorderVal = preorder[i];
//Find the top value of the stack
TreeNode node = stack.peek();
//If the value at the top of the stack is not equal The first value of the inorder traversal
if(node.val != inorder[inorderIndex]){
//Then the value is the left child of the root node,Push the left child onto the stack
node.left = new TreeNode(preorderVal);
stack.push(node.left);
}else{
while(!stack.isEmpty() && stack.peek().val == inorder[inorderIndex]){
node = stack.pop();
inorderIndex++;
}
node.right = new TreeNode(preorderVal);
stack.push(node.right);
}
}
return root;
}
}
课后习题:
| 序号 | 题目链接 | 难度评级 |
|---|---|---|
| 1 | 105. 从前序与中序遍历序列构造二叉树 | 中等 |

边栏推荐
- 【职场杂谈】售前工程师岗位的理解杂谈
- loadrunner-controller-场景执行run
- 如何将虚拟机上的文件复制到主机上
- 一次Spark SQL线上问题排查和定位
- ONES 入选 CFS 财经峰会「2022数字化创新引领奖」
- &#x开头的是什么编码?
- Browser usage ratio js radar chart
- A Spark SQL online problem troubleshooting and positioning
- 生成随机数
- SQL join table (inner join, left join, right join, cross join, full outer join)
猜你喜欢

Mysql+Navicat for Mysql

loadrunner脚本--添加检查点

Flink1.15源码阅读——PER_JOB vs APPLICATION执行流程

优信年营收16亿:亏损3亿 已与蔚来资本及58集团签署股权协议

【TCP/IP】Network Model

VMware下安装win10启动后进入Boot Manger界面如何解决

js right dot single page scrolling introduction page
Doraemon teach you forwarded and redirect page

Canvas particles change various shapes js special effects

第二十四课、二十五课,高级光照(blinn),Gamma矫正
随机推荐
js空气质量aqi雷达图分析
loadrunner脚本--添加检查点
loadrunner-controller-场景执行run
我的创作纪念日
(C语言基础)原样输入输出
Linux安装mysql
js implements the 2020 New Year's Day countdown bulletin board
自定义v-drag指令(横向拖拽滚动)
skynet中一条消息从取出到处理完整流程(源码刨析)
win10镜像下载
MySQL 视图(详解)
Flink1.15 source code reading flink-clients - flink command line help command
刷题《剑指Offer》day05
来n遍剑指--06. 从尾到头打印链表
Andoird开发--指南针(基于手机传感器)
刷题《剑指Offer》day06
第七章
搭建frp进行内网穿透
Doraemon teach you forwarded and redirect page
Scala基础【seq、set、map、元组、WordCount、队列、并行】