题解 | #输出二叉树的右视图#

输出二叉树的右视图

https://www.nowcoder.com/practice/c9480213597e45f4807880c763ddd5f0

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 求二叉树的右视图
 * @param xianxu int整型一维数组 先序遍历
 * @param zhongxu int整型一维数组 中序遍历
 * @return int整型一维数组
 */
export function solve(xianxu: number[], zhongxu: number[]): number[] {
    // write code here
    const buildTree = (a = [], b = []) => {
        if(!a.length || !b.length) return  null;
        // 从 中序遍历list找到根节点
        const nodeIndex  = b.findIndex(item => item === a[0]);
        const curNode = new TreeNode(a[0]);
        curNode.left = buildTree(a.slice(1, nodeIndex + 1), b.slice(0, nodeIndex))
        curNode.right = buildTree(a.slice(nodeIndex + 1), b.slice(nodeIndex + 1));
        return curNode;
    }
    const root = buildTree(xianxu, zhongxu);
    if(!root) return [];
    let queue = [root];
    const res = [];
    while(queue.length){
        const next = [];
        // 因为是右 视图,层级遍历 list 最尾部一项 便是从右往左看的第一项;
        res.push(queue[queue.length - 1].val);
        for(const node of queue){
            node.left && next.push(node.left);
            node.right && next.push(node.right);
        }
        queue = next;
    }
    return res;
}

全部评论

相关推荐

兄弟们,绩效自评一定得给自己打A啊!千万别谦虚给低分,不然领导正愁给谁高分,你这不就“主动请缨”了嘛,而且多数领导不会给你更高分。我几年前试用期绩效自评打了B,领导就给了同等级,还好是试用期。真别等领导主动给高评价!
准备进厂的劳伦斯很迷人:小学时候有个册子 自评 小组 老师 我谦虚打了个b 小组别人给我打b 老师来句我觉得能给他打a 但是小组长说他自评是b怎么能打高呢 那时候我才明白的道理
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务