错误的二叉树

时间:2011-08-07 14:59:33

标签: c binary-tree huffman-code

while(count != 25) {
    tail = head;
    new_node = (binary_node*)malloc(sizeof(binary_node));
    while(tail->next != NULL)
        tail = tail->next;
    tail->next = new_node;  
    new_node->element.frequency = (p->element.frequency + q->element.frequency);
    new_node->LSON = p;
    new_node->LSON->RTAG = 0;
    new_node->RSON = q;
    new_node->RSON->RTAG = 1;   
    head = new_node;
    n = n - 1;
    head = q->next;
    sort(n, head);


    p = head;
    q = p->next;
    count++;
}

上面的代码应生成一个霍夫曼树。但是,形成的二叉树不正确。包含字母的所有节点应该是叶子或没有子的节点,但是一些字母节点仍然有子。代码有什么问题?

1 个答案:

答案 0 :(得分:1)

malloc会返回一个充满垃圾的内存区域。

因为你从来没有为new_node设置它不是字母表节点,所以你会发现那里的garabage说它实际上是一个字母表节点。

验证的结果:你应该找到你原来拥有的更多字母表节点。