本文主要是介绍449. Serialize and Deserialize BST,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
经典题目之一,二叉树的遍历和深度广度优先都相关。
一般的binary tree的serialization 和 deserialization 相对麻烦一点,因为没有多余特征可以利用。但binary search tree就有重要的大小关系可以利用。或者说,binary tree的恢复,往往需要preorder 和inorder两个序列,或者postorder和inorder。但是binary search tree只需要preorder或者postorder就行。只用这俩就是深度优先搜索了。只用level order也行,但不太方便, 因为需要额外的内存消耗,而且本质上也还是深度优先。
方法一:preorder based serialization and deserializaiton
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Codec {
public:// Encodes a tree to a single string.string serialize(TreeNode* root) {string res = "";serialize_helper(root, res);return res;}void serialize_helper(TreeNode* root, string &res) {if (root == NULL) return;res += to_string(root-&g
这篇关于449. Serialize and Deserialize BST的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!