331. 验证二叉树的前序序列化
原始题目链接:https://leetcode.cn/problems/verify-preorder-serialization-of-a-binary-tree/
序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。
解题思路:
使用栈模拟验证是否是满足题意,具体看参考文献的思路。
代码实现:
class Solution:
def isValidSerialization(self, preorder: str) -> bool:
stack = []
preorder_list = preorder.split(',')
for node in preorder_list:
stack.append(node)
while len(stack) >= 3 and stack[-1] == stack[-2] == '#' and stack[-3] != '#':
for _ in range(3):
stack.pop()
stack.append('#')
return len(stack) == 1 and stack.pop() == '#'
参考文献:
https://leetcode.cn/problems/verify-preorder-serialization-of-a-binary-tree/solution/pai-an-jiao-jue-de-liang-chong-jie-fa-zh-66nt/