我有一個二叉樹類,如下:Python的二叉樹序列化問題
class BTree:
def __init__(self, data, left=None, right=None):
self.data = data
self.left = left
self.right = right
def __unicode__(self):
return "%s" % self.data
,我必須列示如下另一棵樹的序列化方法:
class JTree(object):
def __init__(self, id, children=None):
self.id = id
if children is None:
children=[]
self.children = children
def encode_tree(obj):
if not isinstance(obj, JTree):
raise TypeError("%r is not JSON serializable" % (o,))
return obj.__dict__
然後我填充二叉樹數據以下:
bt = BTree("1")
bt.left =BTree("2")
bt.right=BTree("3")
所以如果我序列化的數據,我可以得到以下結果:
tree = JTree(bt.data, [JTree(bt.left.data), JTree(bt.right.data)])
print json.dumps(tree, default=encode_tree)
{"id": "1", "children": [{"id": "2", "children": []}, {"id": "3", "children": []}]}
問題是,我無法弄清楚如何編寫一段代碼來生成結果。這意味着我想要一個發電機或遞歸函數來運行代碼:
JTree(bt.data, [JTree(bt.left.data), JTree(bt.right.data)])
有人可以給我一個想法嗎?謝謝
這非常酷!感謝您解決我的問題!有一個小修正:convert_to_jtree(bt.left) – georgehu
@georgehu:是的,你說得很對。很高興我能幫上忙。 –