這是一個二叉搜索樹的實現,我不知道爲什麼我的最小方法(用於查找樹中的最小元素)沒有返回正確的答案,而是一個任意的內存地址。 我正在通過這個構造函數BST(3)創建一棵樹;現在我運行min(),它正確地返回3,但是在插入1(insert(1)方法)後,min()返回一些十六進制地址。我最小法(二叉搜索樹)有什麼問題?
class node{
public:
int key;
node *left;
node *right;
node *parent;
};
class BST{
node *root;
public:
BST(){}
BST(int a){
root=new node();
root->left=NULL;
root->right=NULL;
root->parent=NULL;
root->key=a;
}
void insert(int n)
{
if(search(n))return;
node *p=root;
node *m=new node;
m->key=n;
m->left=NULL;
m->right=NULL;
while(1)
{
if(p->key > n)
{
//look left
if(p->left==NULL)
{
p->left=m;
m->parent=p;
return;
}
else
p=p->left;
}
else
{
//look right
if(p->right==NULL)
{
p->right=m;
m->parent=p;
return;
}
else
p=p->right;
}
}
}
bool search(int n)
{
node *p=root;
while(1)
{
if(p->key > n)
{
//look left
if(p->left==NULL)
return false;
else
p=p->left;
}
else if(p->key==n)return true;
else
{
//look right
if(p->right==NULL)
return false;
else
p=p->right;
}
}
}
int min()
{
node *p=root;
if(p->left == NULL)
return (p->key);
p=p->left;
}
};
謝謝你做了這麼一個愚蠢的錯誤...我如何刪除dis問題? – Jignesh 2012-07-25 17:17:04
@ user1343868我認爲我的代碼比較乾淨,但這取決於你。 – 2012-07-25 17:18:19
@ user1343868檢查[this](http://meta.stackexchange.com/questions/25088/how-can-i-delete-my-post-on-stack-overflow)是否希望刪除您的帖子。 – Deqing 2012-07-26 08:33:34