zoukankan      html  css  js  c++  java
  • 【LeetCode】Verify Preorder Serialization of a Binary Tree(331)

    1. Description

      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

    2. Answer

      

    public class Solution {
       public static boolean isValidSerialization(String preorder) {
           String[] strs = preorder.split(",");
            int degree = -1; // root has no indegree, for compensate init with -1
            for (String str : strs) {
                degree++; // all nodes have 1 indegree (root compensated)
                if (degree > 0) { // total degree should never exceeds 0
                    return false;
                }
                if (!str.equals("#")) {// only non-leaf node has 2 outdegree
                    degree -= 2;
                }
            }
            return degree == 0;
       }
    }
  • 相关阅读:
    java如何手动创建一个线程池
    HashMap的面试总结(摘抄)
    JDK源码调试
    分布式和集群的区别
    开发中model,entity和pojo的区别
    java并发编程_CountDownLanch(倒计数锁存器)应用场景
    Map 怎么排序
    java中Thread的 interrupt异常处理
    zookeeper节点失效重连机制
    java并发库_并发库知识点整理
  • 原文地址:https://www.cnblogs.com/leesf456/p/5380246.html
Copyright © 2011-2022 走看看