更新:
我发现了更多我想要实现的例子:Managing Hierarchical Data in MySQL .我想这样做,但在 JavaScript 中,因为我正在构建一个应用程序,它接受分层结构中的评论,更具体地说是 reddit.com。如果你的 chrome 网络浏览器上有 Pretty JSON 扩展,请转到 reddit 并单击线程评论,然后将 .json 添加到 url 以查看我正在解析的内容。
我得到的 JSON 数据很好,它只是通过注释进行解析并添加适当的 HTML 以显示其嵌套。
解决方案的想法?
老问题:
我正在编写一个程序,我已经到了需要在编写代码之前弄清楚逻辑的部分。
我正在接收树格式的数据,但每个父节点可能有多个子节点,而我似乎唯一能找到数据的树是具有权重的树或每个节点最多有两个子节点的树。所以我试图找出算法来评估树的每个节点,如下所示:
startingParent[15] // [# of children]
child1[0]
child2[5]
child2ch1[4]
...
child2ch5[7]
child3[32]
...
child15[4]
现在,当我尝试写出我的算法如何工作时,我最终编写了嵌套的 for/while 循环,但我最终为树的每个高度级别编写了一个循环,用于动态数据和未知高度的树每个节点的未知数量的 child 这不起作用。我知道在某个时候我学会了如何像这样遍历一棵树,但现在我完全忘记了。任何人都知道这是如何在循环方面完成的?
最佳答案
如果您不打算使用递归,则需要一个辅助数据结构。队列将为您提供广度优先遍历,而堆栈将为您提供深度优先遍历。无论哪种方式,它看起来大致是这样的:
structure <- new stack (or queue)
push root onto structure
while structure is not empty
node <- pop top off of structure
visit(node)
for each child of node
push child onto structure
loop
维基百科引用
关于树遍历算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819712/