[栈] leetcode 331 Verify Preorder Serialization of a Binary Tree

problem:https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/

这道题需要记录一个count值,表示当前树还有多少个地方可以插入新的节点(包括插入数字和插入Null)。

如果插入的是数字节点,那么会多一个可用的位置(新的节点占用了一个,但又新增了两个);如果插入的是null,那么它只会占用一个,所以会少一个可用的位置。

每次遇到没有可用位置的时候,意味着当前字符串非法。

扫描到最后时,如果可用位置还有剩余,也意味着当前字符串非法。

class Solution {
public:
    bool isValidSerialization(string p) {
        //stack<char> sta;
        int count = 1;
        int num = 0;
        bool bDigit = false;
        p.push_back(‘,‘);
        for(int i = 0;i < p.size();i++)
        {
            if(p[i] == ‘#‘)
            {
                bDigit = false;
                if(count == 0) return false;
                count--;
            }
            else if(p[i] >= ‘0‘ && p[i] <= ‘9‘)
            {
                bDigit = true;
                num = 10 * num + (p[i] - ‘0‘);
            }
            else if(p[i] == ‘,‘ && bDigit)
            {
                if(count == 0) return false;
                count++;
                num = 0;
            }
        }
        return count == 0;
    }
};

原文地址:https://www.cnblogs.com/fish1996/p/11273345.html

时间: 2024-11-05 21:38:04

[栈] leetcode 331 Verify Preorder Serialization of a Binary Tree的相关文章

leetcode 331. Verify Preorder Serialization of a Binary Tree

传送门 331. Verify Preorder Serialization of a Binary Tree My Submissions QuestionEditorial Solution Total Accepted: 10790 Total Submissions: 34071 Difficulty: Medium One way to serialize a binary tree is to use pre-order traversal. When we encounter a

[leetcode] 331. Verify Preorder Serialization of a Binary Tree 解题报告

题目链接: https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/ One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, we record the node's value. If it is a null node, we record using

[LeetCode] 331. Verify Preorder Serialization of a Binary Tree Java

题目: One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, we record the node's value. If it is a null node, we record using a sentinel value such as #. _9_ / 3 2 / \ / 4 1 # 6 / \ / \ / # # # # # # For e

331. Verify Preorder Serialization of a Binary Tree

/* * 331. Verify Preorder Serialization of a Binary Tree * 2016-7-9 by Mingyang * 这个题目我的绝对原创的思路是把number##变为#,这样不断地俄罗斯方块式的减少 * 到最后只剩下一个#,所以自己就这么做,然后用StringBuffer的replace功能 * 但是发现有一个case过不去,就是"9,#,92,#,#"为什么呢?就是因为我只把单个digit * 的数考虑进去,没有看92作为一个整体. *

[LeetCode][JavaScript]Verify Preorder Serialization of a Binary Tree

Verify Preorder Serialization of a Binary Tree One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, we record the node's value. If it is a null node, we record using a sentinel value such as #. _9_ / 3

【LeetCode】Verify Preorder Serialization of a Binary Tree(331)

1. Description One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, we record the node's value. If it is a null node, we record using a sentinel value such as #. _9_ / 3 2 / \ / 4 1 # 6 / \ / \ / # # #

LeetCode OJ 331. Verify Preorder Serialization of a Binary Tree

One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, we record the node's value. If it is a null node, we record using a sentinel value such as #. _9_ / 3 2 / \ / 4 1 # 6 / \ / \ / # # # # # # For examp

【Leetcode】Verify Preorder Serialization of a Binary Tree

题目链接:https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/ 题目: One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, we record the node's value. If it is a null node, we record us

331. Verify Preorder Serialization of a Binary Tree -- 判断是否为合法的先序序列

One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, we record the node's value. If it is a null node, we record using a sentinel value such as #. _9_ / 3 2 / \ / 4 1 # 6 / \ / \ / # # # # # # For examp