331. 验证二叉树的前序序列化

73 阅读1分钟

序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #

    const arr = preorder.split(',');
        let stack =[]
        for (let i=0; i< arr.length; i++) {
            /* 不想多使用额外的数组 也可以考虑用splice(i,2,'#')方法 将符合条件的叶子节点替换为 # , 这样就要考虑 在遍历数组时改变他的长度带来的影响*/
            const w = arr[i]
            stack.push(w)
            let j = stack.length -1 ;
                    while(stack.length >2&& stack[j-1] ==='#' && stack[j-2]!== '#'&& stack[j] ==='#'){
                    // stack.splice(j-2,3,'#') ;
                    console.log(j)
                    stack[j-2] = '#'
                    stack.pop()
                    stack.pop()
                    j -=2;
                }
        }
        console.log(stack)

        return stack.length ===1 && stack[0] === '#'

};