c# - 如何命名遍历树的方法和属性,就像在完全展开的文件夹浏览器中向下移动一样?

标签 c# algorithm tree naming-conventions naming

想象一个文件夹完全展开的文件资源管理器样式的窗口。从任意节点开始,我按向下箭头在树中向下移动。也许我读错了,但我找不到 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;
    }
}

最佳答案

我相信您是在谈论预序遍历(之所以这样命名是因为先访问了父项,然后访问了子项)。如果您查看您引用的维基百科文章中的图片:

Pre-order Traversal

等效的文件夹结构是:

F
|-B
| |-A
| |-D
|   |-C
|   |-E
|-G 
| |-I
|   |-H

在一个典型的全开文件夹结构中,遍历的顺序是:

  1. 访问父文件夹
  2. 按顺序(递归)访问子文件夹

这是pre-order traversal的定义.

关于c# - 如何命名遍历树的方法和属性,就像在完全展开的文件夹浏览器中向下移动一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26639471/

相关文章:

c - 在循环中使用递归时如何展开?

extjs - 立即加载 TreeStore。外部4

c# - 如何使用 RDLC 报告的文本框属性将超链接 url 设置为在新窗口中打开?

c# - Blazor EditForm 表单提交时的自定义验证消息

c# - 哪种方法可以更好地阻止 sql 注入(inject)

python - 给定一个字符串,波兰表示法中最长的 WFF 之一的长度是多少?

java - 从定义为字符串的运算符执行算术运算

algorithm - 这两个嵌套循环真的具有相同的二次时间复杂度吗?

algorithm - 这个后序森林遍历是否正确?

c# - 开发和测试将驻留在 GAC 中的 SDK 的策略