序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。
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] === '#'
};