algorithm - 是否可以设计一棵节点有无限多个子节点的树?

标签 algorithm data-structures tree binary-tree

如何设计一棵有很多(无限数量)分支的树?

我们应该使用哪种数据结构来存储子节点?

最佳答案

您实际上不能存储无限多的子项,因为内存无法容纳。但是,您可以无限制地存储许多 child - 也就是说,您可以创建树,其中每个节点可以有任意数量的 child ,没有固定的上限。

有几种标准方法可以做到这一点。您可以让每个树节点存储其所有子节点的列表(可能作为动态数组或链接列表),这通常通过尝试来完成。例如,在 C++ 中,您可能有这样的东西:

struct Node {
   /* ... Data for the node goes here ... */
   std::vector<Node*> children;
};

或者,您可以使用 left-child/right-sibling representation , 将多路树表示为二叉树。这通常用于优先级队列,如二项式堆。例如:

struct Node {
    /* ... data for the node ... */
    Node* firstChild;
    Node* nextSibling;
};

希望这对您有所帮助!

关于algorithm - 是否可以设计一棵节点有无限多个子节点的树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618703/

相关文章:

java - 将 boolean 值的四个组合转换为真/假 - 使用 IF Else 语句

C# 字典内存管理

c - 将数百万个元素插入二叉搜索树 BST

c - 指针到指针赋值的段错误

C:打印以 'a' 开头的每个可能的字符串,递归函数

python - 点聚类算法

生成一组整数的不同大小的所有排列的算法?

python - 用Python管理大数据结构

c++ - 从一组集合中找到所有不相交集合的算法是什么?

用C语言创建一个n叉树,找不到任何例子