C# 给定一个分支列表,如何查找单独连接在一起的树列表列表

C# 给定一个分支列表,如何查找单独连接在一起的树列表列表,c#,graph,C#,Graph,假设我有一个分支列表,如何找到一个单独连接在一起的树列表列表?下图应该说明我的观点。输入是单个树中的分支列表,如标签所示,即1、2、3等 过程如下所示: 创建一个接受树节点作为参数的函数 如果节点没有子节点,则打印当前节点的值并返回 如果节点有两个子节点,则结束当前单节点值列表,然后递归到左节点,然后是右节点 如果节点有一个子节点,则将其添加到树中包含的值列表中,然后递归到该节点中 继续 根据图,有一个非常简单的解决方案。 让我们制作一个包含元素的列表,这些元素是相同类型的列表。程序将被称为树列

假设我有一个分支列表,如何找到一个单独连接在一起的树列表列表?下图应该说明我的观点。输入是单个树中的分支列表,如标签所示,即
1
2
3


过程如下所示:

  • 创建一个接受树节点作为参数的函数
  • 如果节点没有子节点,则打印当前节点的值并返回
  • 如果节点有两个子节点,则结束当前单节点值列表,然后递归到左节点,然后是右节点
  • 如果节点有一个子节点,则将其添加到树中包含的值列表中,然后递归到该节点中
  • 继续

  • 根据图,有一个非常简单的解决方案。 让我们制作一个包含元素的列表,这些元素是相同类型的列表。程序将被称为树列表(列表,树)。您需要做的只是:

  • 看看现在的关节,你 让列表指针指向第一个 列表的元素
  • 如果有 当前节点中有多个子节点:遍历每个子节点 子树,递增列表指针 和呼叫
    树列表(列表[i],当前子树) 其中我是列表指针和 当前_子树是当前子树 =)
  • 如果只有一个子项存在,只需将此关节添加到当前列表项并继续下一个
  • 当然,列表指针和列表值必须是全局的,并在recurion中进行修改

  • @如果一个节点有两个以上的子节点怎么办?@Ngu-但不应该?对不起,根据你的图片,我假设这是一棵二叉树?它不是二叉树;从树
    5
    6
    7
    8
    中可以看出,为一个有3个子树定义“右节点”。似乎我们这里不是在处理二叉树。@Ngu,@cHao-我们可以做的是遵循相同的过程,但是如果子树的数量是:
    >1
    ,则必须枚举子树。输入还是输出?这个问题听起来像你想要左边的列表……但是如果是输入,那么它就是你已经拥有的东西。@CHao,输入是一个树列表,
    1
    2
    3
    ,等等……k,输入对我来说没有多大意义。我是否应该假设所有的“树”都是连接的(因此是同一棵树的一部分)?如果是这样,为什么要将它们作为节点列表传递,而不是作为一棵树传递?@cHao,所有的树都是连接的,但我想将它们分组到单独连接的树中list@cHao-是的,这就是我看到的。我不把它看成是一张树的列表,而是一棵大树。