我一直在嘗試使用類實現二叉搜索樹。每次我嘗試編譯和運行程序時,程序都會結束。我已經嘗試了很多東西,比如讓* root公開在main中訪問它,這樣我就可以更新根目錄,但不知何故每次都會變爲null。 幫助將不勝感激。 這是我的大學項目。使用類的二進制搜索樹
#include <iostream>
using namespace std;
class tree;
class Node {
friend class tree;
private:
Node *lchild,*rchild;
int data;
public:
Node (int x) {
data = x;
lchild = rchild = NULL;
}
};
class tree {
protected:
Node* root;
void inorder(const Node* root)const;
public:
tree() {
root = NULL;
}
bool insert(int item);
void inorder() const {inorder(root);};
Node* getroot() {
return root;
}
};
bool tree :: insert(int item) {
if (root == NULL) {
Node *temp = new Node(item);
root = temp;
return (bool) root;
}
if (item < root -> data) {
insert(item);
}
if (item > root -> data) {
insert(item);
}
else if (item == root -> data) {
cout<<"Duplicate";
exit (0);
}
return (bool) root;
}
void tree :: inorder(const Node *root)const {
if (root != NULL) {
inorder(root -> lchild);
cout<<root -> data;
inorder(root -> rchild);
}
}
int main()
{
tree obj1;
obj1.insert(3);
//obj1.insert(4);
obj1.insert(1);
//obj1.insert(5);
obj1.inorder();
}
爲什麼tree :: insert有一個根參數? –
爲什麼你同時擁有'root1'和'root'並做了單獨的事情? –
@ manni66我試圖做到這一點,因爲我有點把它從C轉換到C++,我認爲這將有助於遞歸。 –