331 驗證二叉樹的前序序列化

2021-10-21 20:54:52 字數 817 閱讀 5339

題目:

題目分析:

首先,前序遍歷的特點是,(以題目示例為例)假設我們從根節點9出發,前序遍歷的第乙個節點是3,這時候,所有的操作都是基於3來執行的,除非3被更深的節點(4或1)覆蓋(就如同3覆蓋根節點9一般)或者3前序遍歷結束,回到了根節點9.

這麼一分析,這似乎就是棧結構嘛!

假設我們將每個節點都設定乙個計數器,遇到乙個非『#』節點就將其壓入棧,如果每遇到乙個他的子節點,就加一,如果已經為2就將節點彈出棧(說明這個節點下面的都已經被遍歷過了),如果遇到"#",只加一,不壓棧。

**:
class solution 

};bool isvalidserialization(string preorder) else else else }}

}// popping all the node that it's count is 2

while(!tree.empty() && tree.top().count == 2) tree.pop();

// incomplete -> false

if(index < length ) return false;

else if(!tree.empty()) return false;

// complete -> true

else return true;}};

331 驗證二叉樹的前序序列化

序列化二叉樹的一種方法是使用前序遍歷。當我們遇到乙個非空節點時,我們可以記錄下這個節點的值。如果它是乙個空節點,我們可以使用乙個標記值記錄,例如 9 3 2 4 1 6 例如,上面的二叉樹可以被序列化為字串 9,3,4,1,2,6,其中 代表乙個空節點。給定一串以逗號分隔的序列,驗證它是否是正確的二...

331 驗證二叉樹的前序序列化

序列化二叉樹的一種方法是使用前序遍歷。當我們遇到乙個非空節點時,我們可以記錄下這個節點的值。如果它是乙個空節點,我們可以使用乙個標記值記錄,例如 9 3 2 4 1 6 例如,上面的二叉樹可以被序列化為字串 9,3,4,1,2,6,其中 代表乙個空節點。給定一串以逗號分隔的序列,驗證它是否是正確的二...

331 驗證二叉樹的前序序列化

序列化二叉樹的一種方法是使用前序遍歷。當我們遇到乙個非空節點時,我們可以記錄下這個節點的值。如果它是乙個空節點,我們可以使用乙個標記值記錄,例如 例如,上面的二叉樹可以被序列化為字串 9,3,4,1,2,6,其中 代表乙個空節點。給定一串以逗號分隔的序列,驗證它是否是正確的二叉樹的前序序列化。編寫乙...