LeetCode刷題筆記5 驗證二叉樹的前序序列化

2021-10-25 22:36:55 字數 735 閱讀 3298

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

_9_

/ \

3 2

/ \ / \

4 1 # 6

/ \ / \ / \

# # # # # #

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

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

每個以逗號分隔的字元或為乙個整數或為乙個表示 null 指標的 『#』 。

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

示例 1:

輸入: 「9,3,4,#,#,1,#,#,2,#,6,#,#」

輸出: true

示例 2:

輸入: 「1,#」

輸出: false

示例 3:

輸入: 「9,#,#,1」

輸出: false

class

solution

return

(nodecount - leafcount)+1

== leafcount;

}}

leetcode熱題100刷題筆記 5

96.不同的二叉搜尋樹 98.驗證二叉搜尋樹 101.對稱二叉樹 如果用遞迴的方法來寫,此題非常的簡單,是乙個基礎題,要熟悉的是非遞迴的迭代版本,利用棧來求解 資料結構如果學的足夠紮實,就應該知道這是乙個很經典的問題,其實質就是問你,按照1 n的順序入棧,出棧的序列有多少種,其實就是卡特蘭數,只要知...

LeetCode刷題筆記 125 驗證回文串

給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false 設定兩個指標i和j,i從頭遍歷到...

Leetcode刷題筆記

1.兩數之和給定乙個整數陣列nums 和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。ps 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。思路 用target減去nums中的每乙個數,並設立乙個字典來記錄對應的下標 class...