[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     2
  / \   /  4   1  #  6
/ \ / \   / # # # #   # #

For example, the above binary tree can be serialized to the string "9,3,4,#,#,1,#,#,2,#,6,#,#", where # represents a null node.

Given a string of comma separated values, verify whether it is a correct preorder traversal serialization of a binary tree. Find an algorithm without reconstructing the tree.

Each comma separated value in the string must be either an integer or a character ‘#‘ representing null pointer.

You may assume that the input format is always valid, for example it could never contain two consecutive commas such as "1,,3".

Example 1:
"9,3,4,#,#,1,#,#,2,#,6,#,#"
Return true

Example 2:
"1,#"
Return false

Example 3:
"9,#,#,1"
Return false

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



要判断给的序列是不是数的先序遍历序列。

思路就是"挖洞",如果第一个是数,那就是根节点,它的左右可以放2个节点,有两个"洞"。

此时如果是‘#‘,填上了一个洞;如果是数,填上一个洞又加了两个洞。

当洞不够用或者最后有没填满的洞,就说明不是先序遍历序列。

 1 /**
 2  * @param {string} preorder
 3  * @return {boolean}
 4  */
 5 var isValidSerialization = function(preorder) {
 6     var spilted = preorder.split(‘,‘), holes = 0;
 7     if(spilted.length === 0) return true;
 8     if(spilted[0] !== ‘#‘) holes += 2;
 9     for(var i = 1; i < spilted.length; i++){
10         if(spilted[i] !== ‘#‘){
11             if(holes > 0) holes++;
12             else return false;
13         }else{
14             holes--;
15         }
16         if(holes < 0) return false;
17     }
18     return holes === 0 ? true : false;
19 };
时间: 2024-10-05 17:09:02

[LeetCode][JavaScript]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】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

[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】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] 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

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

problem:https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/ 这道题需要记录一个count值,表示当前树还有多少个地方可以插入新的节点(包括插入数字和插入Null). 如果插入的是数字节点,那么会多一个可用的位置(新的节点占用了一个,但又新增了两个):如果插入的是null,那么它只会占用一个,所以会少一个可用的位置. 每次遇到没有可用位置的时候,意味着当前字符串非法. 扫描到最后时,如果

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] Verify Preorder Serialization of a Binary Tree 验证二叉树的先序序列化

One way to serialize a binary tree is to use pre-oder 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 exampl

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