面試題37 序列化二叉樹

2022-03-03 20:35:24 字數 882 閱讀 9386

輸入一棵二叉樹,將其序列化為char*,並且支援反序列化為二叉樹。

解題思路

**執行結果沒問題,但是未通過所有測試案例。。。

#include #include #include #include #include "listnode.h"

#include "treenode.h"

#include "graph.h"

using namespace std;

#define maxnum 100010

#define drift 1001

void serialize(treenode* proot, vector&vec)

vec.push_back('0' + proot->val);

vec.push_back(',');

serialize(proot->left, vec);

serialize(proot->right, vec);

}// 序列化二叉樹(前序遍歷的格式)

char* serialize(treenode* root)

treenode* deserialize(vector&vec)

// 如果讀取的是數字

if(vec[vec.size() - 1] >= '0' && vec[vec.size() - 1] <= '9')

pnode->right = deserialize(vec);

else

return pnode;

}// 根據前序遍歷的序列化結果,重建二叉樹

treenode* deserialize(char *str)

int main()

面試題37 序列化二叉樹

題目 請實現兩個函式,分別用來序列化和反序列化二叉樹。演算法思想 根據前序遍歷規則完成序列化與反序列化。所謂序列化指的是遍歷二叉樹為字串 所謂反序列化指的是依據字串重新構造成二叉樹。依據前序遍歷序列來序列化二叉樹,因為前序遍歷序列是從根結點開始的。當在遍歷二叉樹時碰到null指標時,這些null指標...

面試題37 序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹。序列化 我們可以按照樹的前序遍歷的方式,將樹中的資料讀出放到乙個序列裡。這裡,對於結點是null的,也要表示出來,用以區分,這裡用 作為null結點,對於非null的結點,就取出它們的值放入序列,另外,各個值之間用,隔離開,方便區分。反序列化 根據前面...

面試題37 序列化二叉樹

題目 請實現兩個函式,分別用來序列化和反序列化二叉樹。如 將樹序列化為字串 1,2,3,null,null,4,5 還要將字串反序列化為二叉樹 序列化方法 用佇列進行層次遍歷,把結點乙個個加入到結果集中 反序列化方法 根據二叉樹結點之間的運算關係進行求解,若結點 cur 的下標為 x 那麼其左子結點...