验证二叉树的前序序列

141 阅读1分钟

image.png

解题思路

使用计数法,记录一个总的条数,剩余槽树的数量,对序列进行遍历,当我们遍历到是# 号时,说明,不需要给它预制槽数,对槽数进行--,为数字时,对剩余槽数进行累加,

var isValidSerialization = function(preorder) {
    // 总条数
    const n = preorder.length
    // 指针
    let i =0
    // 槽数
    let slots = 1
    // 指针小于总条数
    while( i < n) {
        // 没有槽数直接返回false
        if(slots === 0) {
            return false
        }
        // 判断走到,
        if(preorder[i] === ',') {
            ++i;
        }
        // 空的情况
        if(preorder[i] === '#') {
            --slots;
            ++i;
        } else { 
            // 数字情况
            while( i < n && preorder[i] !== ',') {
                ++i;
            }
            ++slots
        }
    }
    return slots == 0
};