【LeetCode】331. Verify Preorder Serialization of a Binary Tree
来源:互联网 发布:淘宝如何购买百度云 编辑:程序博客网 时间:2024/05/01 16:15
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
转载discuss上一个思路,连续遇到两个“#”,说明这是叶子节点,删去他们及他们的根节点,用一个’#‘代替,直到最后剩一个’#‘说明是二叉树。否则,返回false。
class Solution {public: bool isValidSerialization(string preorder) { int len = preorder.length(); stack<char> stk; int count =0; for(int i=0; i < len;i++) { if(isdigit(preorder[i])) { while(i<len&&isdigit(preorder[i])) { i++; } i--; stk.push(preorder[i]); } else if(preorder[i]=='#') { stk.push(preorder[i]); while(stk.top()=='#'&&stk.size()>=2) { stk.pop(); if(stk.top()=='#') { stk.pop(); if(stk.empty())return false; if(stk.top()=='#')return false; stk.pop(); stk.push('#'); }else{ stk.push('#'); break; } } } } if(stk.top()=='#'&&stk.size()==1) return true; else return false; }};
- leetcode 331. Verify Preorder Serialization of a Binary Tree
- [LeetCode]331. Verify Preorder Serialization of a Binary Tree
- 【LeetCode】331. Verify Preorder Serialization of a Binary Tree
- LeetCode 331. Verify Preorder Serialization of a Binary Tree
- LeetCode *** 331. Verify Preorder Serialization of a Binary Tree
- LeetCode 331. Verify Preorder Serialization of a Binary Tree
- [leetcode] 331. Verify Preorder Serialization of a Binary Tree
- leetcode 331. Verify Preorder Serialization of a Binary Tree
- [leetcode] 331. Verify Preorder Serialization of a Binary Tree
- LeetCode 331. Verify Preorder Serialization of a Binary Tree
- [leetcode]331. Verify Preorder Serialization of a Binary Tree
- [LeetCode] 331. Verify Preorder Serialization of a Binary Tree
- leetcode 331. Verify Preorder Serialization of a Binary Tree
- leetcode Verify Preorder Serialization of a Binary Tree
- Leetcode: Verify Preorder Serialization of a Binary Tree
- LeetCode Verify Preorder Serialization of a Binary Tree
- [leetcode] Verify Preorder Serialization of a Binary Tree
- [Leetcode]Verify Preorder Serialization of a Binary Tree
- 如何利用黑天鹅事件来避险和赚钱(比如中国房价一定会崩盘但无法确定时间点)
- iOS基础框架
- [BZOJ3170] [Tjoi 2013]松鼠聚会
- 并行计算----5种方式实现判断是不是素数.Net,Win32,JavaRunnable,OpenMp,JavaThread
- MySQL Cluster简介和搭建例子
- 【LeetCode】331. Verify Preorder Serialization of a Binary Tree
- Linux并发(进程裂变)
- 关于TextView.setTextColor(int); 括号里那个颜色int值的问题
- Sql Server备份语句
- iOS显示3D模型,iOS和U3D混编(互相跳转)
- 用AutoCompleteTextView实现历史记录提示
- Linux内核sk_buff结构分析
- java常量池
- JAVA_WEB学习经验总结