gpt4 book ai didi

computer-science - 给定一个类似 'tree' 的数据结构,打印出从叶子到根的所有路径

转载 作者:行者123 更新时间:2023-12-04 00:51:13 27 4
gpt4 key购买 nike

请有人指导我正确的方向,我不明白如何将结果从叶返回到根

tree = {
"name": "root",
"children": [
{
"name": "child1",
"children": [
{
"name": "grand_child1",
"children": []
},
{
"name": "grand_child2",
"children": []
}
]
},
{
"name": "child2",
"children": []
}
]
}

编辑:解决方案应该是一种算法,因为如果树深度增加,它应该仍然有效

最佳答案

你可以使用递归,例如:

def traverse(node, *names, &block)
names.unshift(node[:name])

yield *names and return if node[:children].empty?

node[:children].each { |child| traverse(child, *names, &block) }
end

该方法在单个节点上运行。在每次调用时,它将节点的名称添加到收集的 names 列表中(最初为空)。然后它会为每个 child 再次调用自己,传递 names。如果一个节点没有任何子节点,它将产生 names 到给定的 block 。 (这也被传递了)

用法:

traverse(tree) do |*names|
p name: names
end

输出:

{:name=>["grand_child1", "child1", "root"]}
{:name=>["grand_child2", "child1", "root"]}
{:name=>["child2", "root"]}

关于computer-science - 给定一个类似 'tree' 的数据结构,打印出从叶子到根的所有路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66388480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com