二叉樹廣義表的序列化反序列化

2021-07-22 14:37:55 字數 907 閱讀 7139

今天突然想起來大學時候遺留的乙個關於二叉樹的問題,甚是掛懷,於是葛優癱中驚坐起,怒而碼之,所謂老·不碼不舒服司機是也。

定義二叉樹結構:

struct node

;typedef struct node *bitree;

隨機生成二叉樹:

bitree randomcreatetree() 

return root;

}

二叉樹序列化為廣義表:

char *printtreetostring(struct node *pnode) 

void walkprinttree(bitree pnode, char *line) else

}

廣義表(僅限二叉樹)字串的反序列化:

bitree parselinetotree(char *line, int len) 

return null;

}int findcommapos(char *line, int len) else if (cc == ')')

}else if (cc==',')}}

return (int) (strchr(line, ',') - line);

}int parsedata(char *line, int *pint, int len) ;

for (i = 0; i < len; i++)

}if (strcmp(numstr, "#") == 0) else

return pos;

}

大體如此,具體細節有待完善。後續可以考慮支援b+tree的廣義表序列化反序列化。

序列化 反序列化二叉樹

設計乙個演算法能夠實現序列化和反序列化一棵二叉樹 注意,不是二叉搜尋樹bst 這裡的序列化指的是將一棵二叉樹儲存到檔案中,反序列化就是從檔案中讀取二叉樹結點值重構原來的二叉樹。前一篇文章儲存二叉搜尋樹到檔案中 解決了儲存一棵二叉搜尋樹到檔案中的問題,但是由於本題目的意思是要把一棵二叉樹儲存到檔案中並...

前序序列化 反序列化二叉樹

序列化 vectorserializetreepreorder treenode root preorder root return ans 反序列化 treenode deserializetreepreorder vector a,int i leetcode 331 verify preord...

序列化和反序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹。基本思想很簡單,序列化就是用某一種遍歷方法將二叉樹元素儲存在字串陣列中,當然要乙個個元素分離,分得清誰是誰。反序列化就是把儲存在字串陣列中的元素進行重構,使之成為二叉樹。我們不妨選擇前序遍歷的思想進行搜尋與重構。本題的關鍵是如何對元素進行儲存,可以放在...