題目:
題目分析:
首先,前序遍歷的特點是,(以題目示例為例)假設我們從根節點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,其中 代表乙個空節點。給定一串以逗號分隔的序列,驗證它是否是正確的二叉樹的前序序列化。編寫乙...