leetcode 331 :Verify Preorder Serialization of a Binary Tree:简单题
来源:互联网 发布:javascript倒计时脚本 编辑:程序博客网 时间:2024/06/05 06:34
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 '#'
representingnull
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
public class Solution { public boolean isValidSerialization(String preorder) {if(preorder==null||preorder.length()==0)return false;Stack<Character> st=new Stack<>();String[] split=preorder.split(",");st.push(split[0].charAt(0));int Index=1;while(!st.isEmpty()){Character cc=st.pop();if(cc!='#'){if(Index<split.length)st.push(split[Index++].charAt(0));else {return false;}if(Index<split.length)st.push(split[Index++].charAt(0));else {return false;}}}return Index==split.length;}}其实,只是判断节点的位置和数量是否有误,因此不需要栈,也可以操作。
非叶子结点,入度是1,出度是2
叶子节点,入度是1,出度是0
所以计算diff表示总的(入度-出度),初始化1
主要过程中,出现diff<0表示出错,结束后diff==0才可以
public boolean isValidSerialization(String preorder) { String[] nodes = preorder.split(","); int diff = 1; for (String node: nodes) { if (--diff < 0) return false; if (!node.equals("#")) diff += 2; } return diff == 0;}
- 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 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】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 *** 331. Verify Preorder Serialization of a Binary Tree
- [LeetCode]Verify Preorder Serialization of a Binary Tree
- LeetCode 331. Verify Preorder Serialization of a Binary Tree
- leetcode verify Preorder Serialization of a Binary Tree
- Android ---sql语句
- Ubuntu 安装openjdk7
- ffmpeg视频生成jpg图片截图(一)
- CocoaLumberjack 学习总结(五)
- Android使用Volley请求网络图片
- leetcode 331 :Verify Preorder Serialization of a Binary Tree:简单题
- windows使用git时出现:warning: LF will be replaced by CRLF
- Ubuntu 下Apache 域名绑定设置
- 风口的猪-中国牛市
- kettle
- 自动为需要的物体添加脚本
- 管道命令和xargs的区别(经典解释)
- 链接文件的操作
- 蓝桥杯--带分数