Serialization is the process of converting a data structure or object into a sequence of bits so that it can be stored in a file or memory buffer, or transmitted across a network connection link to be reconstructed later in the same or another computer environment.
大概意思就是說Binary Tree可以被編碼成為一串字,可以從這串字里解碼還原Binary Tree.
這個(gè)編碼的方法隨意,只要有辦法還原就可以。
一個(gè)比較common的Approach.
Function encode():
就是拿一個(gè)list,然后preorder traverse BST, 把node.val放進(jìn)去。
List =>[a,b,c,d,e,null,...];
Function Decode() 解碼是一個(gè)比較難的
從一個(gè)pre-order traversal 還原一個(gè)BST。【記得之前就曾經(jīng)考過把一個(gè)Sorted List 做成一個(gè) Binary Tree, Always choose mid as root】. ?這個(gè)是一個(gè)很好的方法,但是其實(shí)沒有必要多sort一遍,因?yàn)槲覀兊膃ncoding是按順序來的,有更好的辦法。
用Deque 來搞事情。
先把List里的data放在Deque里,然后不斷remove。 Deque 的remove應(yīng)該是從head開始,所以我們第一個(gè)就拿到了head/root. 然后開始往下面造樹。由于順序是按preorder traversal encode的,也就是說list里的node就是邏輯上從tree的上面往下比劃時(shí)候大概的順序,所以按著順序remove,可以recover BST.