想象一个文件夹完全展开的文件资源管理器样式的窗口。从任意节点开始,我按向下箭头在树中向下移动。也许我读错了,但我找不到 name for this kind of traversal (注意:本文仅适用于二叉树;我找不到关于 N 元遍历及其名称的好引用)。
在我的代码中,我一直在努力为它找到一个好名字。我使用了 GetForwardEnumerator()
、GetNextNode()
等。我最接近的表达方式是它是“树中的下一个节点”,但是只有当您像我所描述的文件资源管理器窗口一样查看树时才有意义。
这种遍历/枚举的标准名称是什么,我应该如何命名执行它的方法和属性?现在我选择了 .NextNode
。它与 .NextSibling
非常接近,但这是我发现传达意图的最佳方式。
示例代码:
/// <summary>
/// Gets the next node.
/// </summary>
/// <value>
/// The next tree node if it exists; otherwise, <c>null</c>.
/// </value>
public SimpleTreeNode<T> NextNode
{
get
{
if (this.Children.Count > 0)
{
return this.Children[0];
}
else if (this.NextSibling != null)
{
return this.NextSibling;
}
else
{
SimpleTreeNode<T> parentNode = this.Parent;
while (parentNode != null)
{
SimpleTreeNode<T> nextSiblingNode = parentNode.NextSibling;
if (nextSiblingNode != null)
{
return nextSiblingNode;
}
parentNode = parentNode.Parent;
}
}
return null;
}
}
最佳答案
我相信您是在谈论预序遍历(之所以这样命名是因为先访问了父项,然后访问了子项)。如果您查看您引用的维基百科文章中的图片:
等效的文件夹结构是:
F
|-B
| |-A
| |-D
| |-C
| |-E
|-G
| |-I
| |-H
在一个典型的全开文件夹结构中,遍历的顺序是:
- 访问父文件夹
- 按顺序(递归)访问子文件夹
这是pre-order traversal的定义.
关于c# - 如何命名遍历树的方法和属性,就像在完全展开的文件夹浏览器中向下移动一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26639471/