[LeetCode]Verify Preorder Serialization of a Binary Tree
2016-04-17 14:20
609 查看
如果在还未完全遍历整个树的时候就已经nonleaves + 1 == leaves,然而剩余未遍历的部分仍然是由若干个full tree组成的,这样整个树就不能满足nonleaves + 1 == leaves的条件。public class Solution { public boolean isValidSerialization(String preorder) { if(preorder == null || preorder.length() == 0) return false; String[] cache = preorder.split(","); int leaves = 0, nonleaves = 0, i = 0; for (i = 0; i < cache.length && nonleaves + 1 != leaves; i++) { if(cache[i].equals("#")) leaves++; else nonleaves++; } // The given tree is a full tree, if and only if nonleaves + 1 == leaves && i == cache.length. // Because preorder count root node first. return nonleaves + 1 == leaves && i == cache.length; } }
如果在还未完全遍历整个树的时候就已经nonleaves + 1 == leaves,然而剩余未遍历的部分仍然是由若干个full tree组成的,这样整个树就不能满足nonleaves + 1 == leaves的条件。
https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/
判断一个序列是不是二叉树的前序遍历,不能重构树
解法二:
每遇到两个null就把这两个与前一个非null结合,变为null压回栈中
public class Solution {
public boolean isValidSerialization(String preorder) {
Stack<String> stack = new Stack();
String[] arr = preorder.split(",");
stack.push(arr[0]);
for (int i = 1; i < arr.length; i++) {
if (arr[i].equals("#")) {
while (stack.size() >= 2 && stack.peek().equals("#")) {
String s1 = stack.pop();
String s2 = stack.pop();
if (!(s1.equals("#") && !s2.equals("#"))) {
return false;
}
}
}
stack.push(arr[i]);
}
return stack.size() == 1 && stack.peek().equals("#");
}
}
相关文章推荐
- Android_AndroidManifest.xml
- 《机电传动控制》学习笔记-07
- jquery根据name属性查找
- HDU 1050(其实应该是线段树但规模太小,没必要)
- [Data Structure] Maximum Subsequence Sum
- 技术文章写作及运营的技巧:分析篇 | 什么样的文章受欢迎?
- php序列化存储数据
- 【杭电oj】-2099-整除的尾数(求未知的后两位)
- 20145337《JAVA程序设计》第七周学习总结
- iOS地图开发-高德地图
- 静态注册广播接收者
- [python]Django AttributeError 'tuple' object has no attribute 'regex'
- 几个常用的Linux监控脚本
- php面向对象的简单用法
- 10年资深猎头揭露:他们为什么能年薪百万
- org.eclipse.wst.xsl.jaxp.debug.invoker.TransformationException: No embedded stylesheet instruction f
- 广东工业大学2016校赛决赛 A: Krito的讨伐
- 基础知识点问题
- Spark性能相关参数配置 之 Shuffle 相关
- 20145326《Java程序设计》实验二Java面向对象程序设计实验报告