이것은 이진 검색 트리 구현입니다. 왜 내 최소 방법 (트리에서 최소 요소를 찾는)이 정답을 반환하지 않고 임의의 메모리 주소인지 파악할 수 없습니다. 이 생성자 BST (3);에 의해 트리를 만들고 있는데, 이제 min()을 실행하면 올바르게 3을 반환하지만 1 (insert (1) 메서드 삽입) 후 min()은 16 진수 주소를 반환합니다.내 최소 방법 (이진 검색 트리)에 어떤 문제가 있습니까?
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;
}
};
감사합니다.이 바보 같은 실수를했습니다 ... 어떻게 질문을 삭제합니까? – Jignesh
@ user1343868 내 코드가 더 깨끗하다고 생각하지만 그것은 사용자에게 달려 있습니다. –
@ user1343868 게시물을 삭제하려면 [this] (http://meta.stackexchange.com/questions/25088/how-can-i-delete-my-post-on-stack-overflow)를 선택하십시오. – Deqing