解题思路
这道题的意思是,检查一串数字是不是一棵树先序遍历的结果。
做法是使用递归
代码
class Solution {
public boolean isValidSerialization(String preorder) {
if(preorder == null || preorder.length()==0) return true;
ArrayList<String> numbers= getNumbers(preorder);
if(helper(numbers))
return numbers.size()==0?true:false;
return false;
}
public boolean helper(ArrayList<String> numbers) {
if(numbers.get(0).equals("#")) {
numbers.remove(0);
return true;
}
else {
numbers.remove(0);
if(numbers.size()==0) return false;
if(!helper(numbers)) return false;
if(numbers.size()==0) return false;
if(!helper(numbers)) return false;
}
return true;
}
public ArrayList<String> getNumbers(String s) {
ArrayList<String> res=new ArrayList<String>();
int p1=0,p2=0,len=s.length();
while(p2<len) {
while(p2<s.length()&&s.charAt(p2)!=',') p2++;
res.add(s.substring(p1,p2));
p1=p2+1;p2=p1;
}
return res;
}
}