解题思路
- 将输入的前序序列化转为树组
- 从后向前遍历输入的前序序列化,当遇到两个
#并且它们前面的值不为#的情况,则删除两个#,将前面的值替换为# - 如果以上操作可以持续到根节点,则最后只剩余一个
#,是则说明前序序列化正确,否则不正确
var isValidSerialization = function(preorder) {
// 将输入的序列化转为数组
const arr = preorder.split(',');
// 将 x,#,# 更新为 #
for(let i = arr.length-1;i>=2;i--){
if(arr[i]==='#'&&arr[i-1]==='#'&&arr[i-2]!=='#'){
arr[i-2] = '#'
arr.pop();
arr.pop();
}
}
// 如果最后只剩余一个#,则说明正确
return arr.length===1&&arr[0]==='#'
};