/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 求二叉树的右视图
* @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
};