访问链接树的所有节点的最佳方法是什么(所有节点都具有对父节点的引用,而所有子节点都具有引用,根节点的父节点为null),以便在任何其祖先之前都不会访问任何节点?布朗尼积分为非递归。
最佳答案
伪代码:
NodesToVisit = some stack or some list
NodesToVisit.Push(RootNode)
While NodesToVisit.Length > 0
{
CurNode = NodesToVisit.Pop()
For each Child C in CurNode
NodesToVisit.Push(C)
Visit(CurNode) (i.e. do whatever needs to be done)
}
编辑:是否递归?
从技术上讲是正确的,正如AndreyT及其他人在本文中所指出的那样,此方法是形式的一种递归算法,其中使用显式管理的堆栈代替CPU堆栈,并且在此处进行递归While循环的级别。这就是说,它与递归实现本身在一些微妙但重要的方面有所不同:
关于algorithm - 走路树, parent 先,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1616332/