2010-07-02 40 views
3

我需要创建一个树,可能有任意数量的节点构成(在合理范围内,0至10之间说的)输出转移的,就像这样:这是什么样的对象树?

   X 
      /| \ 
      X X X 
     /
      X 
     /\ 
     X X 

什么样的树结构的这是什么?有什么技术可以用来构建和特别修改这种树?

谢谢

+0

我看不出有什么特别的这棵树。 – kennytm 2010-07-02 19:18:58

+5

看起来像一棵树给我 – FinnNk 2010-07-02 19:19:56

+0

这是什么语言?有HTML DOM,XML DOM,JavaScript关联数组,JavaScript多维数组等。 – 2010-07-02 19:23:48

回答

4

这只是一个通用树。也许因为二叉树很常见,这棵树看起来不同,但实际上,它是二叉树,是树的特例。

你不需要任何特殊的技术来处理树。如果你习惯于二叉树,你可能使用左右指针来保持孩子。在这种情况下,如你所说,如果你想要0到10个孩子,你可以用一个10个指针的数组代替左/右。

4

它是一棵树,纯粹而简单。它只是不是二进制树(每个节点最多有2个子节点)。大多数树形结构都应该能够处理它。

1

听起来像是2-3 tree的一种形式,但它不一定是2个数据entrys,有3个链接到其他节点,您可以随意扩展它。

1

从单独提供的信息来看,此树不属于任何特殊类别。我想你正在考虑沿着二叉树的路线,但是一旦你得到了许多2或0以外的孩子的节点,就没有特别的分类。

根据它的实现和使用方式的不同,它可能是也可能不是有序树:有序树节点以明确的有意图顺序而不是以任意顺序存储子节点。

如果它是一个有序树(或至少被实现为一个),任何给定的节点都可以表示为一系列数字,表示从基节点开始的一系列节点到子运动。例如,

0, 0, 1 

将代表基节点的最左边孩子的唯一孩子的正确孩子。以这种方式存储对节点的引用可以简化很多事情,编写一个简单的函数来遍历这个系列并返回结果节点非常简单。

1

你有什么只是一棵普通的树。特殊情况是二叉树或平衡树。它既不是。

在大多数语言中都有用于操作这些库的库。递归是一种流行的技术。所有关于数据结构的大学教科书都将深入讨论如何删除树。你可以得到一个overview here