2011-09-23 36 views
0

嵌套表我有一個二叉樹類是這樣的:序列化樹到使用python

class BinaryTree: 
def __init__(self, data, left=None, right=None): 
    self.data = data 
    self.left = left 
    self.right = right 

現在我面臨的一個任務中嵌套列表序列化此結構。順便說一句,我心裏有一個左向右穿越功能:

def binary_tree(tree): 
    if tree: 
     for node_data in binary_tree(tree.left): 
      yield node_data 
     for node_data in binary_tree(tree.right): 
      yield node_data 

還是有它序列化到混合嵌套結構的一般方法是什麼?例如,{[]}或[{}]?

回答

0

作爲BinaryTree的方法:

def to_dict(self): 
    data = self.data 
    left = self.left 
    if left is not None: 
     left = left.to_dict() 
    right = self.right 
    if right is not None: 
     right = right.to_dict() 
    return {'data':data, 'left':left, 'right':right} 

和作爲BinaryTree一個類的方法:

def from_dict(cls, D): 
    data = D['data'] 
    left = D['left'] 
    if left is not None: 
     left = cls.from_dict(left) 
    right = D['right'] 
    if right is not None: 
     right = cls.from_dict(right) 
    return cls(data, left, right) 
+0

但這僅返回一個節點。是否有可能將整個樹作爲嵌套數據結構返回? – georgehu

+0

@georgehu它確實返回整棵樹。 –