如何使用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数组的大小直到运行时才知道,它可以是任何大小,也可以由任何数量的数组组成,这个锯齿状数组中的每个数组都可以有任何数量的元素。。

如何使用c实现非二叉树结构

假设您有一个类似以下的节点结构

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);
    }
  }
}