我目前在链接列表中遇到问题,我可以访问当前节点的左侧子节点和右侧节点,但如果我访问该子节点的子节点,则会收到与该子节点相同的数据。我假设孩子的左右孩子因为某些奇怪的原因而被设置为自己,但我不确定为什么会这样。我有一个min heap弹出两个类对象,然后这些对象被创建为我正在创建的节点的左右子节点,我正在尝试创建的是一个huffman树。这是它的pusedo代码;
for(if i is less than the heapsize)
{
pop node1;//pops out a object not a pointer.
pop node2;
node parent = node(sum of both frequencies, address of node1, address of node2)
//allocation of new memory for parent.
insert(parent)
}
我知道它必须是一个地址问题,因为如果我通过我的min_heap并检查这些对象的左右孩子,它会正确地指向它的左右孩子。
LL实施
node.h
class node
{
private:
int data;
public:
node* left_child;
node* right_child;
node();
node(int,node*,node*);
}
node.cpp
node::node()
{
left_child = NULL;
right_child = NULL;
}
node::node(int temp,node* temp, node* temp2)
{
data = temp;
left_child = temp;
right_child = temp2;
}