我试图建立一个二叉树实现的节点类。以下是节点类的头文件:
class Node {
public:
Node();
Node(int value);
void setParent(Node& parent);
void setLeftChild(Node& child);
void setRightChild(Node& child);
void setValue(int value);
void setIndex(int index);
void setHeight(int height);
private:
int value;
Node& parent;
Node& leftChild;
Node& rightChild;
int height;
int index;
};
现在,我想编写上面声明的构造函数 Node(int 值)。如何初始化 leftChild、rightChild、父字段?它们也是节点,所以我想在它们上调用默认构造函数,但它似乎不起作用。Node::Node(int value) : value(value), parent(), leftChild(), rightChild(){ }
编译器表示“对类型‘Node’的引用需要一个初始值设定项”
谢谢
您可以更好地使用指针(Node*
)而不是引用(Node
引用是引用某个对象所必需的(很明显,当你没有左孩子或右孩子时,你就不能引用它们)。所以指针来这里帮助你-它们允许指向任何东西-在这种情况下,<code>nullptr</code>被当作什么都不使用。
在这种情况下,在引用上使用指针并将其初始化为 NULL 是有意义的。通过这样做,您还可以通过检查 NULL 指针来检查节点是否有子节点或父节点(即不是根节点)。此外,请确保添加析构函数以释放内存。
你应该使用一个构造函数来指定节点的父节点:Node(Node *parent, int value);创建根节点时,只需使用 NULL 作为参数调用此构造器。所有对父项和子项的引用都应该是指针。
这是我的remove函数,用于删除具有元素的节点。我得到了一个seg错误,我很确定这是因为temp->prev是前面的哨兵,所以从技术上来说,它不在双链表中。如果这是正确的,我实际上如何防止这种情况?如有任何帮助,不胜感激。 编辑:刚刚更新了代码,但仍然出现了Seg错误
我正在编写一段C代码来执行有向图的广度优先遍历。 在main函数中,我总共定义了7个节点,并在它们之间建立了连接。一个节点是包含名称、值和所有子节点列表的结构。 我调用函数breadthFirstTraverse(constNode 我的主要问题是,深层节点的列表似乎为空,即使子节点已添加到其中。 节点: 节点: 遍历函数: 这是输出。您可以看到,node2和node3没有子节点,即使节点被添加到
本文向大家介绍从C#中的LinkedList中删除指定的节点?,包括了从C#中的LinkedList中删除指定的节点?的使用技巧和注意事项,需要的朋友参考一下 要从LinkedList中删除指定的节点,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-
本文向大家介绍C++删除链表中间节点的方法,包括了C++删除链表中间节点的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++删除链表中间节点的方法。分享给大家供大家参考,具体如下: 题目: 给定链表头结点head,实现删除链表的中间节点函数。 解题思路及代码: 快慢指针,快指针走两步,慢指针一步。 当快指针走到终点时,慢指针正好是链表中间节点,删除此节点即可。 链表结构定义: 算法
双链表节点是在main函数中创建的。Ender和header已定义。在删除节点函数处中断-ender为空。 释放最后一个和第一个输入的内存的最佳方法是什么,即:删除:233,A和888,F?
我需要将子元素复制到父元素中。 输入 期望输出 我尝试的内容(输出与输入保持相同): 我肯定会错过一些非常简单的事情。子元素与父元素具有相同的名称,这应该不是问题?