Verify Preorder Serialization of a Binary Tree

来源:互联网 发布:阿里云学生服务器 翻墙 编辑:程序博客网 时间:2024/05/01 20:39

参考:点击打开链接

对于二叉树,我们把空的地方也作为叶子节点(如题目中的#),那么有

  • 所有的非空节点提供2个出度和1个入度(根除外)
  • 所有的空节点但提供0个出度和1个入度

我们在遍历的时候,计算diff = outdegree – indegree. 当一个节点出现的时候,diff – 1,因为它提供一个入度;当节点不是#的时候,diff+2(提供两个出度) 如果序列式合法的,那么遍历过程中diff >=0 且最后结果为0.


public class Solution {    public boolean isValidSerialization(String preorder) {        String[] strs = preorder.split(",");        int diff = 1;        for (String str: strs) {            if (--diff < 0) {                return false;            }            if (!str.equals("#")) {                diff = diff + 2;            }        }        return diff == 0;    }}


0 0