用类表示有根树
Representing Rooted Tree in terms of class
本文关键字:表示 更新时间:2023-10-16
我在理解以下取自《代表有根的树》的段落时遇到了困难。它主要展示了两种表示树的方法。G&T对我来说有点清楚,但另一个对我来说不太清楚,它显示了类定义。
-
G&T选项:每个节点有3个引用:项、父节点、子节点。子节点的单个引用必须引用一个列表(因此节点可以根据需要拥有任意多个子节点)。
-
另一种选择是直接链接兄弟姐妹。例如
class SibTreeNode { Object item; SibTreeNode parent; SibTreeNode firstChild; // Left-most child. SibTreeNode nextSibling; } public class SibTree { SibTreeNode root; int size; // Number of nodes in the tree. }
视频中的作者还声称(大约18分钟)第二种方法需要更少的内存。有人能帮我理解类定义吗?和第一个方法相比,这将需要更少的内存?
第二个选项只是一个侵入性的单链表。侵入性的单链表占用较少的内存,因为不需要从列表节点指向节点内容的指针。
看看G&带有外部列表的T选项:
class ListNode {
SibTreeNode* object;
ListNode* nextElement;
};
class SibTreeNode {
Object* item;
SibTreeNode* parent;
ListNode* childList;
};
每个SibTreeNode元素具有5个指针而不是4个。
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何将ampl中的集合表示为c++中的向量
- std::is_base_of表示ctor编译错误
- 输入中的字符串数未知(以字母表示)
- 我可以信任表示整数的浮点或双精度来保持精度吗
- c++模板来表示多项式
- 询问在设计我的手臂模拟器功能表示格式1
- CMakeLists.txt中的命名空间表示法
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 如何计算Big-O表示法中的平均渐近运行时间
- 我应该如何表示我拥有的连续元素序列?
- 在C++中,使用带有 std::optional 参数的函数<T>来表示可选参数是否有意义?
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 表示类模板C++空类型
- 具有所表示类的相同构造函数签名的代理类模板
- 嵌套在循环中的两个循环的 big-O 表示法
- 具有引用成员的结构是否具有唯一的对象表示形式
- 使用 int 表示浮点除法 C++
- Geeksforgeeks C 程序故障排除:IEE 754 表示法为十进制
- 如何知道n!是否可以表示为三个连续数字的乘法?