c# - 更改/导航到树的特定节点?

标签 c# algorithm tree

我正在尝试更改树的特定节点,但我被难住了。我知道可以获取和返回树中节点的算法,但我的目标是实际更改该树中节点的值。

例如,如果我们有一棵树,其中每个项目的名称属性都是

Root
+Node 1
++Node 1_1
++Node 1_2
++...
+Node 2
++Node 2_1
++Node 2_2
++..

我想更改 Node 1.2 的名称,我想这样: Root.Node1.Node1_2.Name = "New Name"; 但我该如何以编程方式执行此操作? 在我的例子中,我得到了对象节点 1_2,我想在树中更改它。


我忘了说我使用的数据结构是我自己的数据结构,它有一个父级和一个子级列表。

我应该重新表述我想要实现的目标。给定上面的树结构(它的深度可以是无限的,虽然没有说明),并且给定一个已知在树中的任意对象,我将如何访问树中的元素并修改它?也就是说,我将如何以编程方式实现类似于:Root.Node 1.Node 1_1.Node 1_1_2.Node 1_1_2_4.Node 1_1_2_N.Name?

让我知道是否还有任何困惑?

最佳答案

如果您指的是 Winforms TreeViews,则每个 TreeNode 都有一个带有字符串 indexerNodes 属性您可以使用,提供您已经设置并知道节点名称/键:

TreeView tv = new TreeView();
tv.Nodes.Add("a", "Albert");
tv.Nodes["a"].Nodes.Add("v", "Victoria");

tv.Nodes["a"].Nodes["v"].Text = "Peggy";

请注意,您甚至可以更改这些名称/键,现在新值将起作用:

tv.Nodes["a"].Name = "Al";
tv.Nodes["Al"].Text = "Bundy";

当然现在旧的不行了:

tv.Nodes["a"].Text = "Bud"; // <-- now throws a NullObjectReference!

关于c# - 更改/导航到树的特定节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33331095/

相关文章:

algorithm - 基于相似词序列的聚类字符串

java - Java中递归生成树

C# Microsoft Bot Framework 与 luis 结果指向 QNA Maker 和图形 api

c# - 在 WPF .NET Framework 中使用自定义任务管理器时,如何防止进程重复?

c# - 如何以编程方式隐藏键盘

c++ - 在具有重复项的一长串数据的滚动窗口中查找模式

algorithm - 作为流操作的数基转换

c# - 回调后重新加载插件

c - 在有根树中插入(项目) - LCRS 表示

c - 最大函数 c 树高