我需要创建一个由节点构成的树,这些节点可能具有任何数字(在合理范围内,介于0到10之间)的传出转换,如下所示:
X
/ | \
X X X
/
X
/ \
X X
这是什么类型的树结构?有哪些技术可用于构建和特别修改此类树木?
由于
答案 0 :(得分:4)
这是一棵纯净而简单的树。它不是二进制树(每个节点最多有2个子节点)。大多数树结构都应该能够处理它。
答案 1 :(得分:4)
这只是一棵通用树。也许因为二叉树如此常见,这棵树看起来不同,但事实上,它是二叉树,它是树的一种特殊情况。
您不需要任何特殊技术来处理树。如果您习惯使用二叉树,则可能使用左右指针来保存子项。在这种情况下,如你所说,如果你想要0到10个孩子,你可以用10个指针的数组替换左/右。
答案 2 :(得分:1)
听起来像是2-3 tree的一种形式,但它不是2个数据,只有3个链接到其他节点,你可以随意扩展它。
答案 3 :(得分:1)
根据单独提供的信息,此树不属于任何特殊类别。我想你正在思考二叉树的思路,但是一旦你得到了除2或0之外的一些孩子的节点,就没有特殊的分类。
根据它的实现和使用方式,它可能是也可能不是有序树:有序树节点以明确的有意顺序而不是以任意顺序存储它们的子节点。
如果它是有序树(或至少实现为一个),则任何给定节点可以表示为一系列数字,表示从基节点开始的节点到子移动的序列。例如,
0, 0, 1
将表示基节点最左侧子节点的唯一子节点的右子节点。以这种方式存储对节点的引用可以简化很多事情,并且编写一个简单的函数来迭代这样的序列并返回结果节点非常容易。
答案 4 :(得分:1)
你拥有的只是一棵普通的树。特殊情况是二叉树或平衡树。它既不是。
大多数语言中都有用于操作这些库的库。递归是一种流行的技术。所有关于数据结构的大学级教科书都将深入探讨如何对树进行CRUD。
您可以获得overview here。