首页 > 编程语言 > 详细

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

时间:2016-02-05 18:44:11      阅读:178      评论:0      收藏:0      [点我收藏+]

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 };

 

 

 

 

 

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

原文:http://www.cnblogs.com/Liok3187/p/5183116.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!