C++ 用类表示根树
我很难理解下面这段选自的内容。它基本上展示了两种表示树的方法。G&T对我来说有点清楚,但另一个对我来说不太清楚,这显示了类的定义C++ 用类表示根树,c++,tree,binary-tree,C++,Tree,Binary Tree,我很难理解下面这段选自的内容。它基本上展示了两种表示树的方法。G&T对我来说有点清楚,但另一个对我来说不太清楚,这显示了类的定义 G&T选项:每个节点有3个引用:项、父项、子项。子节点的单个引用必须引用一个列表(因此节点可以根据需要拥有任意多的子节点) 另一种选择是让兄弟姐妹直接链接。例如 class SibTreeNode { Object item; SibTreeNode parent; SibTreeNode firstChild; // Left-most child. Si
- 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个。让我们构造一个
SibTreeNode
。好的,我们必须构造父项
和两个子项。要构造parent
,我们必须构造SibTreeNode
。。。回到乞丐那里。指针@蝉:你指的是缓存效果吗?如果是,请记住,您可能希望在遍历期间访问负载,这会增加空间分隔列表节点和负载的成本。