leetcode-331-验证二叉树的前序序列化

119 阅读1分钟

image.png leetcode原题

解题思路

  • 将输入的前序序列化转为树组
  • 从后向前遍历输入的前序序列化,当遇到两个 # 并且它们前面的值不为 # 的情况,则删除两个 #,将前面的值替换为 #
  • 如果以上操作可以持续到根节点,则最后只剩余一个#,是则说明前序序列化正确,否则不正确
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]==='#'
};