如何使用堆栈遍历树时跟踪树的深度?

时间:2017-11-24 06:21:43

标签: algorithm tree

如果我有一个使用这样的堆栈的树遍历算法:

input: root
push root onto stack
while stack not empty:
    pop current node off stack
    mark current as visited
    for each of current node's successors:
        if successor not visited:
            push successor onto stack

是否有一种简单的方法可以修改此算法以获得树的最大深度?如果我使用递归,我可以想到如何做到这一点,但我有点想到如何使用堆栈方法来做它。

1 个答案:

答案 0 :(得分:3)

您可以将节点及其深度推到堆栈上,然后跟踪到目前为止看到的最大深度。

go func(i int) {
    defer wg.Done()
    f[i]()
}(a)