【Leetcode】Verify Preorder Serialization of a Binary Tree
  iVhBmnbWORLX 2023年11月02日 84 0


题目链接:https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/

题目:

#.

_9_ / \ 3 2 / \ / \ 4 1 # 6 / \ / \ / \ # # # # # #


"9,3,4,#,#,1,#,#,2,#,6,#,#", where #

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.

'#' representing null"1,,3".Example 1:

"9,3,4,#,#,1,#,#,2,#,6,#,#"

Return trueExample 2:

"1,#"

Return falseExample 3:

"9,#,#,1"

Return false

思路:

两个#可以退一个栈,最后如果栈只剩一个#则true否则false

算法

public boolean isValidSerialization(String preorder) {  
    Stack<String> stack = new Stack<String>();  
    String ps[] = preorder.split(",");  
    for (int i = 0; i < ps.length; i++) {  
        stack.push(ps[i]);  
        while (!stack.isEmpty() && stack.peek().equals("#") && stack.size() >= 3  
                && stack.get(stack.size() - 2).equals("#") && !stack.get(stack.size() - 3).equals("#")) {  
            stack.pop();  
            stack.pop();  
            stack.pop();  
            stack.push("#");  
        }  
    }  
    return stack.size() == 1 && stack.peek().equals("#");  
}




【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  rEZj93RghFYQ   2023年11月02日   32   0   0 i++leetcode-java
  dUbcXj9lnElT   2023年11月02日   47   0   0 #includei++c++
  dUbcXj9lnElT   2023年11月02日   36   0   0 #include连通块i++
iVhBmnbWORLX
最新推荐 更多