当前位置:网站首页>牛客-TOP101-BM41
牛客-TOP101-BM41
2022-08-02 04:41:00 【一条吃猫的鱼】
import java.util.*;
public class Solution {
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 求二叉树的右视图 * @param xianxu int整型一维数组 先序遍历 * @param zhongxu int整型一维数组 中序遍历 * @return int整型一维数组 */
public TreeNode reConstructBinaryTree(int [] pre,int [] vin) {
int n = pre.length;
int m = vin.length;
if(n == 0 || m == 0){
return null;
}
TreeNode t = new TreeNode(pre[0]);
for(int i = 0; i < vin.length; i++){
if(pre[0] == vin[i]){
t.left = reConstructBinaryTree(Arrays.copyOfRange(pre, 1, i+1), Arrays.copyOfRange(vin, 0, i));
t.right = reConstructBinaryTree(Arrays.copyOfRange(pre, i+1, pre.length), Arrays.copyOfRange(vin, i+1, vin.length));
break;
}
}
return t;
}
public ArrayList<Integer> rightSideView(TreeNode root){
ArrayList<Integer> list = new ArrayList<>();
Deque<TreeNode> deque = new LinkedList<>();
deque.offerLast(root);
while(!deque.isEmpty()){
int size = deque.size();
TreeNode t = null;
while(size != 0){
t = deque.pollFirst();
if(t.left != null)
deque.offerLast(t.left);
if(t.right != null)
deque.offerLast(t.right);
size--;
}
list.add(t.val);
}
return list;
}
public int[] solve (int[] xianxu, int[] zhongxu) {
// write code here
if(xianxu.length == 0 || zhongxu.length == 0){
return new int[0];
}
TreeNode root = reConstructBinaryTree(xianxu, zhongxu);
ArrayList<Integer> list = rightSideView(root);
int[] res = new int[list.size()];
for(int i = 0; i < list.size(); i++)
res[i] = list.get(i);
return res;
}
}
边栏推荐
猜你喜欢
随机推荐
“数字化重构系统,搞定 CEO 是第一步”
学内核之五:问题一,关于上下文切换
单调队列模板 滑动窗口
【MLT】MLT多媒体框架生产消费架构解析(一)
捷信将ESG理念注入企业DNA致力于提供“负责任的消费金融服务”
The practice of alibaba, data synchronization component canal
26. 如何判断一个对象是否存活?(或者GC对象的判定方法)?
元空间内存溢出
[QNX Hypervisor 2.2用户手册]9.17 tolerance
【无标题】
数据湖:流计算处理框架Flink概述
七月阅读:《刘慈欣科幻短篇小说集Ⅰ》笔记
找倍数(DAY 98)
2022河南萌新联赛第(四)场:郑州轻工业大学 A - ZZULI
力扣练习——42 二叉树的层次遍历 II
UE4 事件图表不小心拉了很远,找不到一开始创建的节点
11种你需要了解的物联网(IoT)协议
迅为RK3568开发板编译Buildroot-全自动编译
redis基础入门
IOT物联网概述及应用层架构入门篇