home > working > C/C++ > Q & A

 


Name  
   조정빈 
Subject  
   메인부분 작성좀 도와주세요
C++로 구현한 이진트리 탐색,삽입,삭제 소스입니다.

1. 메인부분을 어떻게 코딩을 해서 탐색,삽입,삭제를 할수 있는지 궁금합니다.

2. info라는 것이 왜 필요한지 궁금합니다. info라는곳에 어떤 값이 들어가나여?

3. Dict(int max) 여기서 max가 배열의 크기값인가여?

#include <iostream.h>

class Dict
{
private:
  struct node
  {
   itemType key; infoType info;
   struct node *l, *r;
   node(itemType k, infoType i,
    struct node *ll, struct node *rr)
   { key = k; info = i; l = ll; r = rr; };
  };
  struct node *head, *z;
public:
  Dict(int max)
  { x = new node(0, infoNIL, 0, 0);
  head = new node(itemMin, 0, 0, z); }
  ~Dict();
  infoType search(itemType v);
  void insert(itemType v, infoType info);
};

infoType Dict::search(itemType v)
{
struct node *x = head->r;
z->key = v;
while(v != x->key)
  x = (v < x->key ) ? x->l : x->r;
return x->info;
}

void Dict::insert(itemType v, infoType info)
{
struct node *p. *x;
p = head; x = head->r;
while(x != z)
  { p = x; x = ( v < x->key) ? x->l : x->r; }
x = new node(v, info, z, z);
if(v < p->key ) p->l = x; else p->r = x;
}

void Dict::remove(itemType v)
{
   struct node *c, *p, *x, *t;
   z->key = v;
   p = head; x = head->r;
   while( v != x->key )
    { p = x; x = ( v < x->key) ? x->l : x-> r; }
   t=x;
   if(t ->r == z) x = x->l;
   else if(t->r->l == z) { x = x->r; x->l = t->l; }
   else
   {
       c = x->r; while ( c->l->l != z) c=c->l;
       x = c->l; c->l = x->r;
       x->l = t->l; x->r = t->r;
   }
   delete t;
   if(v < p->key ) p->l = x; else p->r = x;
}


Prev
   #include<graphics.h>

초보
Next
   이런거 여쭈어 봐도 될지...

때궁이


Copyright 1999-2018 Zeroboard / skin by JiYoo / edit by Mystous