二进制树充满零

时间:2014-02-26 04:10:11

标签: c++ binary-tree

我正在用C ++编写一个二叉树(仅限零或更大的数字),由于某种原因所有的值,但头部似乎为零(当我添加一个元素时),我不知道为什么会发生这种情况。这似乎是相当明显的,但我已经盯着它看了2个小时,似乎无法弄清楚发生了什么。

这是我的BinaryTree.cpp:

#include "BinaryTree.h"

BinaryTree::Node::Node(){
    lChild = NULL;
    rChild = NULL;
    data = -1;
}

BinaryTree::Node::Node(int data){
    lChild = NULL;
    rChild = NULL;
    data = data;
}

BinaryTree::BinaryTree(){
    head = new Node();
}

BinaryTree::BinaryTree(int num){
    head = new Node(num);
}

void BinaryTree::addElement(int data){
    addElement(data, head);
}

void BinaryTree::addElement(int data, Node * node){

    if( node -> data != -1){
        if(node -> data > data){
            if(node -> lChild){
                addElement(data, node -> lChild);
            }
            else{
                node ->lChild = new Node(data);
            }
        }
        else{
            if(node -> rChild){
                addElement(data, node -> rChild);
            }
            else{
                node -> rChild = new Node(data);
            }
        }
    }
    else{
        node -> data = data;
    }
}

这是我的BinaryTree.h:

#ifndef __ConnectTree__BinaryTree__
#define __ConnectTree__BinaryTree__

#include <iostream>
class BinaryTree{

private:
    class Node{
    public:
        int data;
        Node * lChild;
        Node * rChild;

        Node();

        Node(int data);

    };

    Node * head;

    void addElement(int num, Node * node);

public:
    BinaryTree();

    BinaryTree(int num);

    void addElement(int num);
};
#endif /* defined(__ConnectTree__BinaryTree__) */

这是我的main.cpp,我在其中创建了一个二叉树对象并将对象插入到树中。

#include <iostream>
#include "BinaryTree.h"

int main(int argc, const char * argv[])
{

    // insert code here...
    std::cout << "Hello, World!\n";
    BinaryTree t;

    t.addElement(4);
    t.addElement(10);
    t.addElement(11);
    t.addElement(9);
    t.addElement(2);
    t.addElement(1);
    t.addElement(3);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

问题在于BinaryTree :: Node :: Node(int data)实现中的这一行:

data = data;

如果你仍然找不到,我会编辑我的答案,让你知道确切的问题。