【leetcode】331. 驗證二叉樹的前序序列化
阿新 • • 發佈:2019-03-03
輸入格式 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. 驗證二叉樹的前序序列化