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;
       }
    }
  • 相关阅读:
    前端总结--性能优化
    Vue面试中,经常会被问到的面试题/Vue知识点整理
    面试怎么样?才会容易进入到心仪公司了
    Vuex,从入门到入门
    当面试官问你“有什么缺点”时,应如何体面的回答?
    Linux下文件搜索、查找、查看命令
    线程池运行机制
    win10右键很慢
    Linux 安装 Tomcat7
    Tomcat / Nginx 跨域
  • 原文地址:https://www.cnblogs.com/leesf456/p/5380246.html
Copyright © 2011-2022 走看看