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

输出二叉树的右视图

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

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 求二叉树的右视图
 * @param xianxu int整型一维数组 先序遍历
 * @param zhongxu int整型一维数组 中序遍历
 * @return int整型一维数组
 */

/**
 * 方法一:递归
 * 时间复杂度:
 * 空间复杂度:
 */
export function solve(xianxu: number[], zhongxu: number[]): number[] {
    let level: number = 0
    const res: number[] = []
    rebuild(xianxu, zhongxu, level, res)
    return res
}

function rebuild(xianxu: number[], zhongxu: number[], level: number, res: number[]) {
    if (xianxu.length === 0) return null
    const root = xianxu[0]
    const index = zhongxu.findIndex((node) => {
        return 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
}
全部评论

相关推荐

菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务