思路:
1.使用前序遍歷來序列化二叉樹,當碰到子節點為null的時候,用特殊字元』$』來表示。
public class _37_serializebinarytrees
} /**
* 序列化
*/ public string serialize(treenode root)
private void serialize(treenode root, stringbuilder sb)
} private int index;
/*** 反序列化
*/ public treenode deserialize(string str)
public treenode deserialize(string nums)
treenode node = new treenode(integer.valueof(nums[index++]));
node.left = deserialize(nums);
node.right = deserialize(nums);
return node;
} }
測試用例:
a.功能測試(輸入的二叉樹是完全二叉樹;所有節點都沒有左或右子樹的二叉樹;只有乙個節點的二叉樹;所有節點的值都相同的二叉樹)。
b.特殊輸入測試(指向二叉樹根節點的指標為nullptr指標)。
參考:
劍指offer 面試題37 序列化二叉樹
問題 請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點 以...
劍指Offer面試題37
這題的難點在於理解單鏈表中如果有第乙個公共節點,那麼其後的所有節點都重合。public class listnode public class solution 記錄它們的長度可以不用兩個輔助棧,讓長的先走,可以同時到鏈尾 int nlen1 getlistlength phead1 int nle...
面試題37 序列化二叉樹
題目 請實現兩個函式,分別用來序列化和反序列化二叉樹。演算法思想 根據前序遍歷規則完成序列化與反序列化。所謂序列化指的是遍歷二叉樹為字串 所謂反序列化指的是依據字串重新構造成二叉樹。依據前序遍歷序列來序列化二叉樹,因為前序遍歷序列是從根結點開始的。當在遍歷二叉樹時碰到null指標時,這些null指標...