1. 程式人生 > >【leetcode】331. 驗證二叉樹的前序序列化

【leetcode】331. 驗證二叉樹的前序序列化

輸入格式 ret .com 代碼 二叉樹 題目 逗號 false null

題目描述:

序列化二叉樹的一種方法是使用前序遍歷。當我們遇到一個非空節點時,我們可以記錄下這個節點的值。如果它是一個空節點,我們可以使用一個標記值記錄,例如 #

例如,上面的二叉樹可以被序列化為字符串 "9,3,4,#,#,1,#,#,2,#,6,#,#",其中 # 代表一個空節點。

給定一串以逗號分隔的序列,驗證它是否是正確的二叉樹的前序序列化。編寫一個在不重構樹的條件下的可行算法。

每個以逗號分隔的字符或為一個整數或為一個表示 null 指針的 ‘#‘

你可以認為輸入格式總是有效的,例如它永遠不會包含兩個連續的逗號,比如 "1,,3"

解題思路:

具體代碼:

class Solution {
    public boolean isValidSerialization(String preorder) {
        String[] arr = preorder.split(",");
        if(arr[0].equals("#") && arr.length == 1) return true;
        if(arr[0].equals("#") || arr.length % 2 == 0) return false;
        int count = 1;
        
for(int i = 0; i < arr.length; i++){ count--; if(count < 0) return false; if(!arr[i].equals("#")) count += 2; } return count == 0; } }

技術分享圖片

【leetcode】331. 驗證二叉樹的前序序列化