您的位置:首页 > 其它

331. Verify Preorder Serialization of a Binary Tree

2016-03-21 11:12 183 查看
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


Credits:

Special thanks to @dietpepsi for adding this problem and creating all test cases.

Subscribe to see which companies asked this question
迭代迭代迭代递归递归递归啊啊啊!!!

public class Solution {
private String [] str;
private int i;
private boolean test(){
if(i>=str.length)return false;
if(str[i].equals("#"))return true;
i++;
if(test()==false)return false;
i++;
if(test()==false)return false;
return true;
}
public boolean isValidSerialization(String preorder) {
i=0;
str=preorder.split(",");
boolean t = test();
if(t==false)return false;
if(i==str.length-1)return true;
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: