/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 求二叉树的右视图
* @param xianxu int整型一维数组 先序遍历
* @param zhongxu int整型一维数组 中序遍历
* @return int整型一维数组
*/
/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
function solve( xianxu , zhongxu ) {
// write code here
//1.建树
function buildTree(preOrder,inOrder){
if (!preOrder.length || !inOrder.length) return null;
const root=new TreeNode(preOrder.shift());
const rootIndex=inOrder.findIndex(node=>node===root.val);
root.left= buildTree(preOrder,inOrder.slice(0,rootIndex));
root.right=buildTree(preOrder,inOrder.slice(rootIndex+1));
return root;
}
const treeNode = buildTree(xianxu,zhongxu);
// return treeNode;
// // 2 输出右视图
if( treeNode == null) return [];
const res=[];
const queue=[];
queue.push(treeNode);
while(queue.length){
let len=queue.length;
while(len--){
const node=queue.shift();
if(!len){
res.push(node.val);
}
if(node.left){
queue.push(node.left);
}
if(node.right){
queue.push(node.right);
}
}
}
return res;
}
module.exports = {
solve : solve
};