当前位置:网站首页>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. 从前序与中序遍历序列构造二叉树 | 中等 |
边栏推荐
- 2019 NeurIPS | Graph Convolutional Policy Network for Goal-Directed Molecular Graph Generation
- 高并发高可用高性能的解决方案
- 多个js雷达图同时显示
- MySQL 的几种碎片整理方案总结(解决delete大量数据后空间不释放的问题)
- 文件管理:目录管理
- 【TCP/IP】Network Model
- SQL join table (inner join, left join, right join, cross join, full outer join)
- 浏览器使用占比js雷达图
- 作为面试官,关于线程池的问题我一般这样套路...
- mysql 数据去重的三种方式[实战]
猜你喜欢
Spark 在 Yarn 上运行 Spark 应用程序
【机器学习】用特征量重要度(feature importance)解释模型靠谱么?怎么才能算出更靠谱的重要度?
【RISC-V】risc-v架构学习笔记(架构初学)
js radar chart statistical chart plugin
搭建frp进行内网穿透
The future of the hybrid interface: conversational UI
js implements the 2020 New Year's Day countdown bulletin board
Kotlin—基本语法(一)
Flink1.15源码阅读——PER_JOB vs APPLICATION执行流程
Splunk Workflow action 给我们带来的好处
随机推荐
第二十二课,实例化(instancing)
文件管理:目录管理
ARC在编译和运行做了什么?
@RequestBody和@RequestParam区别
内联元素居中
How to restore data using mysql binlog
Progressive Web App(PWA)
Kotlin—基本语法 (五)
SQL join table (inner join, left join, right join, cross join, full outer join)
Aleo Testnet3规划大纲
混合型界面:对话式UI的未来
基于学生成绩管理系统(附源代码及数据库)
OpenGL es 导读篇
skynet中一条消息从取出到处理完整流程(源码刨析)
【节选】吴恩达给出的AI职业生涯规划
JSP config对象的简介说明
JSP pagecontext对象的简介说明
【TCP/IP】Network Model
51单片机-----外部中断
一些计时软件,生产力工具