剑指offer37. 序列化,反序列化二叉树 P194(书上用的流操作)
题目:请实现两个函数,分别用来序列化和反序列化二叉树。 比如:下面这颗树的先序序列化是: 1 2 $ $ 3 $ $ ($表示空节点)
1
/ \
2 3
// 序列化二叉树 ,用队列模拟流操作
void serilize(BinaryTreeNode
*root
, queue
<char> &q
) {
if (root
== NULL) {
q
.push('$');
return;
}
q
.push(root
-> m_nValue
);
serilize(root
-> m_pLeft
, ans
);
serilize(root
-> m_pRight
, ans
);
}
// 反序列化二叉树 ,根据序列q,还原二叉树
void reverseSerilize(BinaryTree
**root
, queue
<char> &q
) {
if (q
.empty()) return;
if (q
.fornt() == '$') {
q
.pop();
return;
}
*root
= new BinaryTreeNode();
(*root
) -> m_nValue
= q
.front();
q
.pop();
(*root
) -> m_pLeft
= NULL;
(*root
) -> m_pRight
= NULL;
reverseSerilize(&((*root
) -> m_pLeft
), q
);
reverseSerilize(&((*root
) -> m_pRight
), q
);
}
转载请注明原文地址: https://mac.8miu.com/read-505438.html