zoukankan      html  css  js  c++  java
  • leetcode--Verify Preorder Serialization of a Binary Tree

    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

    Credits:
    Special thanks to @dietpepsi for adding this problem and creating all test cases.

    Subscribe to see which companies asked this question

     
     
     
    利用栈数字入栈,#出栈
    public class Solution {
        public boolean isValidSerialization(String preorder) {
            Stack<String> stack=new Stack<String>();
            String []num=preorder.split(",");
            int i=0;
            if(num[0].equals("#")&&num.length>1)return false;
            for(;i<num.length;i++){
                if(!num[i].equals("#")){
                    stack.push(num[i]);
                }else if(stack.size()>0&&num[i].equals("#")){
                    stack.pop();
                }
                else if(stack.size()==0&&num[num.length-1].equals("#")&&i==num.length-1){
                    return true;
                }else{
                return false;
                }
            }
            return false;
        }
    }
  • 相关阅读:
    Android UI中英文自动显示问题
    HTTP通信过程原理
    [转] Protobuf高效结构化数据存储格式
    常用json解析库比较及选择 fastjson & gson
    [转]深入Android内存泄露
    [转]Android 如何有效的解决内存泄漏的问题
    Android View 滚动边界的测量
    Oracle查看表之间的约束
    LINUX学习笔记——LINUX下EXP命令全库备份数据库文件
    LINUX档案权限
  • 原文地址:https://www.cnblogs.com/pkuYang/p/5176998.html
Copyright © 2011-2022 走看看