2014-02-26 85 views
2

我正在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; 
} 
+0

而不是看2小時的代碼,你應該花時間學習如何使用編譯器附帶的調試器。在這2個小時內,你可能會解決你的問題,並進一步學習如何解決將來編寫的大多數其他程序的未來問題。 – PaulMcKenzie

回答

2

問題是這條線在二叉樹::節點::節點(int數據)執行:

data = data; 

如果仍然無法找到,我將修改我的答案,讓你知道確切的問題。

+0

Derp。我忘記了'this'關鍵字。應該是'this - > data = data'。謝謝@NiteshChordiya – user2604504