/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 求二叉树的右视图
 * @param xianxu int整型一维数组 先序遍历
 * @param zhongxu int整型一维数组 中序遍历
 * @return int整型一维数组
 */
function solve( xianxu ,  zhongxu ) {
    let level = 0; //表示树的深度
    let res = [];
    function rebuild(xianxu, zhongxu, level, res) {
        if(xianxu.length === 0) return null;
        const root = xianxu[0];
        const index = zhongxu.findIndex(node => node === root)
        //左子树的先序遍历结果
        const leftNodePreOrder = xianxu.slice(1, index + 1);
        //左子树的中序遍历结果
        const leftNodeInOrder = zhongxu.slice(0, index);
        //右子树的先序遍历结果
        const rightNodePreOrder = xianxu.slice(index + 1);
        //右子树的中序遍历结果
        const rightNodeInOrder = zhongxu.slice(index + 1);
        
        rebuild(leftNodePreOrder, leftNodeInOrder, level + 1, res);
        rebuild(rightNodePreOrder, rightNodeInOrder, level + 1, res);
        
        //记录下每一层的
        res[level] = root;
    }
    
    rebuild(xianxu, zhongxu, level, res);
    
    return res;
}
module.exports = {
    solve : solve
};