我想遍历树数据,将该场景模拟为自解释的python脚本。我无法找到为什么水平节点不能在递归中遍历。图递归水平(宽度优先)搜索
说明:第一个字符串是脚本中树的表示形式。 get_childrens
方法是我如何从数据库获得响应。
"""
1
11 | 12 | 13
111 112 113 | 121 122 123 |
| 1221 1222 |
"""
# Do not edit this function in the same format getting data
def get_childrens(i):
if i==1: return [11,12,13]
if i==11: return [111,112,113]
if i==12: return [121,122,123]
if i==122: return [1221,1222]
def create_tree(nodeid):
child_users=get_childrens(nodeid)
if child_users:
child_users=[user for user in child_users]
else:
return
return {
"data":{
"type":nodeid
},
"children": [create_tree(e) for e in child_users if create_tree(e)]
}
if __name__=="__main__":
import json
data= create_tree(1)
print json.dumps(data , indent=4)
print "####################### GETTING THIS #####################"
{
"data": {
"type": 1
},
"children": [
{
"data": {
"type": 11
},
"children": []
},
{
"data": {
"type": 12
},
"children": [
{
"data": {
"type": 122
},
"children": []
}
]
}
]
}
print "###################### EXPECTED THIS #####################"
print json.dumps({"data":{"value":1},
"children":[
{"data":{"value":11},
"children":[
{"data":{"value":111},"children":[]},
{"data":{"value":112},"children":[]},
{"data":{"value":113},"children":[]},
],
},
{"data":{"value":12},
"children":[
{"data":{"value":121},"children":[
{"data":{"value":1221},"children":[]},
{"data":{"value":1222},"children":[]},
]},
{"data":{"value":122},"children":[]},
{"data":{"value":123},"children":[]},
],
},
{"data":{"value":13},
"children":[
],
}
]
},indent=4)
我建议你移动给你的Q的编辑 - 这是在适当的为A.此外,如果我的A帮助,这是很好的做法给予好评,并接受它... –