如何使用c实现非二叉树结构
本文关键字:二叉树 结构 实现 何使用 | 更新日期: 2023-09-27 18:25:47
我正在做一个关于词义消歧(WSD)的毕业项目
我的代码有一个问题
我无法开发可以执行以下操作的代码:我想在这个结构中存储字符串值
root
/ '
A B
/ / ' / / '
C D E C D E
然后我想遍历这个结构中的每一条路径,并将其存储在一个锯齿状数组(array of array)中,这个锯齿状数组中的每个数组都应该包含遍历节点的值,如下所示(忽略根节点)
A C
A D
A E
B C
B D
B E
你知道怎么做吗?
这正是我需要的。。。该阵列将被赋予
string[][] English_Senses = new string[][] { new string[] { "hit", "multiply" }, new string[] { "man", "leg" } };
我需要一个代码,可以用以下值填充以下锯齿状数组
string[,] Features = new string{{"hit","man"},{"hit","leg"},{"mutiply","man"},{"multiply","leg"}};
我希望有人能帮我。
请注意,English_Senses数组的大小直到运行时才知道,它可以是任何大小,也可以由任何数量的数组组成,这个锯齿状数组中的每个数组都可以有任何数量的元素。。
假设您有一个类似以下的节点结构
public class Node {
public string Data;
public List<Node> Children = new List<Node>();
}
听起来您想要创建一个包含Data
元素的所有可能遍历路径的List<string>
。如果是,请尝试以下
public List<string> GetTraversal(Node root) {
var list = new List<string>();
foreach (var child in root.Children()) {
GetTraversal(child, "", list);
}
}
private void GetTraversal(Node node, string path, List<string> list) {
path = path == "" ? node.Data : path + " " + node.Data;
if (node.Children.Count == 0) {
list.Add(path);
} else {
foreach(var child in node.Children) {
GetTraversal(child, path, list);
}
}
}