Python 序列化二叉樹

實現兩個函數,分別用來序列化和反序列化二叉樹

#-*- coding:utf-8 -*-
class TreeNode:
    def __init__(self,x):
        self.val = x
        self.left=None
        self.right =None

class Solution:
    def Serialize(self,root):
        retList=[]
        def preOrder(root):
            if root==None:
                retList.append('#')
                return
            retList.append(str(root.val))
            preOrder(root.left)
            preOrder(root.right)
        preOrder(root)
        return ' '.join(retList)

    def Deserialize(self,s):
        retList=s.split()
        def dePreOrder():
            if retList==[]:
                return None
            rootVal=retList[0]
            del retList[0]
            if rootVal=='#':
                return None
            node = TreeNode(int(rootVal))

            leftNode=dePreOrder()
            rightNode=dePreOrder()

            node.left=leftNode
            node.right=rightNode
            return node

        pRoot =dePreOrder()
        return  pRoot

if __name__ == '__main__':
    a=TreeNode(1)
    b=TreeNode(2)
    c=TreeNode(3)
    d=TreeNode(4)
    e=TreeNode(5)
    f=TreeNode(6)
    g=TreeNode(7)
    h=TreeNode(8)
    i=TreeNode(9)
    a.left=b
    a.right=c
    b.left=d
    b.right=e
    c.right=f
    d.left=g
    e.right=h
    f.left=i
    s=Solution()
    print(s.Serialize(a))

運行結果爲:
1 2 4 7 # # # 5 # 8 # # 3 # 6 9 # # #

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章