我的任务是为二叉树创建一个序列化函数,给每个节点指定一个类,其中包含值; 'val','left','right'。 “ val”只是节点的名称,“ left”是该当前节点左侧的节点,而“ right”是当前节点右侧的节点。
我决定使用JSON来构造我的序列化返回对象,格式与此类似;
{
"val":"root",
"left": {
"val":"left",
"left": {
"val":"left.left",
"left":"none",
"right":"none
},
"right":"none"
},
"right": {
"val":"right",
"left":"none",
"right":"none"
}
}
二叉树的结构如下;
root
/ \
left right
/
left.left
我决定使用python从根节点向下遍历每个左节点,并写入val变量,以及子节点及其子节点及其子节点的结构。然后,对于右节点也是如此。
但是,我直到遇到错误才走了这么远。
def serialize(root_node):
serialized = {}
serialized["val"] = root_node.val
if(root_node.left != None):
current_node = root_node.left
while current_node.left != None:
# serialized["root"]["left"]["val"] = current_node.left.val
我应该如何知道我需要深入到整个["left"]["left"]["left"]...
的深度?
从注释的代码中可以看到,我显然是在静态地访问val键。我需要能够动态地做到这一点。这怎么可能?