【发布时间】:2018-11-30 13:36:52
【问题描述】:
我需要用 c++ 构建一棵树,其中第一级有 m 个节点,m 个节点的每个节点都有 m-1 个子节点,所以第二级将有 m*(m-1) 个节点,第三级level 将有 m*(m-2) 个节点,依此类推。 (类似于所附的img)。 我如何声明每个子节点并为每个级别的每个节点添加大量子节点?我可以递归地做吗? 我们可以首先假设 m 是一个小数,m
我知道这对内存来说是非常大的负载,但是当我们在每个级别进行更深入时,根据添加新孩子之前应用的某些条件,孩子的数量会减少,所以主要只有 1 级和 2 级会添加完整的节点数。
【问题讨论】:
-
您考虑过使用
std::vector吗? -
不清楚问题到底是什么,如果您知道如何添加 2,您几乎拥有添加
n所需的一切。而不是left和right指针可能是子节点指针的向量。你对内存的担忧有点奇怪,因为如果你在二叉树或非二叉树中有 100 万个节点,内存占用几乎相同 -
你的树将有 N = m*(m-1)*..*2.1 个元素,而 m = 13,N = 6.227.020.800 个元素,m = 20 会导致很大的内存问题你。
-
在互联网上搜索“C++ B-Tree”或“C++ B*Tree”。或“C++ 树页面”。您的数据结构在数据结构教科书中,因此您应该能够在网络上找到示例。