[MFC] Binary Search Tree
*호*
다운로드
장바구니
소개글
이진 탐색 트리(Binary Search Tree)를 만들고, 화면에 그려서 보여주는 프로그램입니다.첨부파일내에 프로그램 도큐먼트와 주석이 있습니다.
컴파일 실행환경
비주얼 C++ 6.0 MFC - Single Document Base에서 만들었습니다.본문내용
MyNode* MyAddNode(MyNode *parentNode, CString addStr) // addStr의 String을 가지는 노드를 삽입{
MyNode *newNode;
if(parentNode == NULL) // 현재노드가 비었으면 현재노드에 삽입
{
newNode = new MyNode; // 동적 생성
newNode->strData.Format("%s", addStr); // 노드의 String 데이터를 할당
newNode->lChild = NULL; // 새로 삽입한 노드이므로
newNode->rChild = NULL; // 자식노드들을 NULL이 된다.
return newNode;
}
else if(parentNode->strData > addStr)
{ // 삽입을 노드의 String데이터가 현재 노드의 String 데이터값보다 작을때는
parentNode->lChild = MyAddNode(parentNode->lChild, addStr); // 왼쪽노드에 삽입
}
else if(parentNode->strData < addStr) // 반대로 클 경우는 오른쪽에..
{
parentNode->rChild = MyAddNode(parentNode->rChild, addStr);
}
else if(parentNode->strData == addStr) // 같은 String이라면 이미 존재함을 경고.
AfxMessageBox(addStr + "노드가 이미 존재합니다.", MB_OK);
return parentNode;
}
bool MySearchNode(MyNode *parentNode, CString SearchStr)
{ // 특정 String을 가지는 노드가 트리에 존재하는지를 검사.
if(parentNode)
{
if(parentNode->strData == SearchStr) // 찾는 스트링과 현재노드의 스트링이 같으면
{
return true; // 참을 리턴
}
else if(parentNode->strData > SearchStr) // 현재 스트링보다 값이 작으면
{
if(parentNode->lChild) // 왼쪽 자식노드로 다시 찾음(재귀호출)
return MySearchNode(parentNode->lChild, SearchStr);
else return false;
}
else
{
if(parentNode->rChild) // 반대로 크면 오른쪽 자식노드로..
return MySearchNode(parentNode->rChild, SearchStr);
else return false;
}
}
return false;
}
void MyDeleteTree(MyNode *parentNode) // 전체 트리를 삭제함.
{
if(parentNode)
{
if(parentNode->lChild != NULL) // 자식노드들이 존재하면
MyDeleteTree(parentNode->lChild); // 자식노드들을 재귀로 삭제
else if(parentNode->rChild != NULL)
MyDeleteTree(parentNode->rChild);
delete parentNode; // 부모노드도 삭제.
parentNode = NULL;
}
}
압축파일 내 파일목록
TreeView.cpp
TreeView.h
DlgInput.cpp
DlgInput.h
프로그램설명.hwp
MainFrm.cpp
MainFrm.h
ReadMe.txt
resource.h
StdAfx.cpp
StdAfx.h
Tree.aps
Tree.clw
Tree.cpp
Tree.dsp
Tree.dsw
Tree.h
Tree.ncb
Tree.opt
Tree.plg
Tree.rc
TreeDoc.cpp
TreeDoc.h
Release/tree.exe
res/Tree.ico
res/Tree.rc2
res/TreeDoc.ico
TreeView.h
DlgInput.cpp
DlgInput.h
프로그램설명.hwp
MainFrm.cpp
MainFrm.h
ReadMe.txt
resource.h
StdAfx.cpp
StdAfx.h
Tree.aps
Tree.clw
Tree.cpp
Tree.dsp
Tree.dsw
Tree.h
Tree.ncb
Tree.opt
Tree.plg
Tree.rc
TreeDoc.cpp
TreeDoc.h
Release/tree.exe
res/Tree.ico
res/Tree.rc2
res/TreeDoc.ico