二进制搜索树实现错误


struct Tree{
int Data;
Tree* Left;
Tree* Right;
Tree(){
Data = 0;
Left = NULL;
Right = NULL;
}
};
Tree* Temp;
Tree* Root;
void Add(Tree* Dummy){
if(Dummy == NULL)
Dummy = Temp;
else if(Dummy -> Data <= Temp -> Data)
Add(Dummy -> Left);
else
Add(Dummy -> Right);
cout << endl << Dummy -> Data;
}
void Create(){
Temp = new Tree;
cin >> Temp -> Data;
Temp -> Left = NULL;
Temp -> Right = NULL;
if(Root == NULL)
Root = Temp;
else
Add(Root);
}
void Display(Tree* Dis){
cout << endl << Root -> Data;
cout << endl << Root -> Left -> Data;
cout << endl << Root -> Right -> Data;
}

每次我输入提交的数据时,有人能帮我吗?但当我想显示它时,它崩溃了。我知道会有一个学生错误,但这就是我来这里的目的。

我不确定你的问题是什么,但可以检查一下二进制搜索树示例:

#include <iostream>
using namespace std;
struct Tree{
int Data;
Tree* Left;
Tree* Right;
Tree(int data){
Data = data;
Left = NULL;
Right = NULL;
}
};
Tree* Root;
int Add(Tree* node, Tree* root){ // return int so we can know it successful 
if(node == NULL || node->Data == root->Data)
return 0;
if(node->Data <= root->Data) {
if (root->Left)
Add(node, root->Left);
else 
root->Left = node;
}
else {
if (root->Right)
Add(node, root->Right);
else 
root->Right = node;
}
return 1;
}
int Create(int data){ // return int so we can know it successful
if (Root != NULL)
return 0;
Root = new Tree(data);
return 1;
}
void DisplayInOrder(Tree* node){
if (node == NULL)
return;
DisplayInOrder(node->Left);
cout << node->Data << endl;
DisplayInOrder(node->Right);
}
int main()
{
Create(5);
for (int i = 0; i < 4; i++) {
Tree * t = new Tree(i);
Add(t, Root);
}
DisplayInOrder(Root);
return 0;
}

我不是C++专家,如果我有错误,很抱歉。。。

最新更新