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;
        }
    }
  • 相关阅读:
    jqueryeasyui1.2.3学习
    继续干IT的十个理由
    设计模式建造者模式(Builder Pattern)
    一段不错的视频
    第十一章:配置和安全IntelliMorph
    第十一章:配置和安全许可和配置
    物理库存和财务库存浅析
    第十一章:配置和安全概述
    IE6 双倍边距的解决方法
    asp实现关键词不区分大小写搜索并高亮显示
  • 原文地址:https://www.cnblogs.com/pkuYang/p/5176998.html
Copyright © 2011-2022 走看看