题目:
序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录
给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法
保证每个以逗号分隔的字符或为一个整数或为一个表示null指针的#
给出的输入格式一定是有效的,它永远不会包含两个连续的逗号,比如:"1,,3"
要求:不允许重建树
示例1:
输入:preorder = “9,3,4,#,#,1,#,#,2,#,6,#,#”
输出:true
示例2:
输入:preorder = “1,#”
输出:false
示例3:
输入:preorder = “9,#,#,1”
输出:false
代码
public boolean treeNotdVerification(String preorder) {int t = 0;int y = 0;for(int i = 0; i < preorder.length(); i++){char s = preorder.charAt(i);if(s =='#'){t++;}else if(s != ','){y++;while(++i < preorder.length() && Character.isDigit(preorder.charAt(i))){--i;}}if(i < preorder.length() - 1 && t >= y+1){return false;}}return t==y+1;}
