2
나는 일반적인 이진 트리 (찾기가 아닌)에 대해 "찾기"와 "삭제"기능을 만들고있다. 다음은 찾기 기능 코드입니다.바이너리 트리에서 노드를 삭제하고 찾는다.
bool Find_Node(FileItem * item, Node *current) //function starts with root
{
if (current->getNameItem() == item->getName()) //getNameItem() retrieves the data name in node.
{
currentItem = current; //I have set currentItem as an attribute (pointer to a Node) in the tree class. I created it to point to the node I want to find.
return true;
}
Node* child [2];
child[0] = current->getLeft();
child[1] = current->getRight();
bool res = false;
for (int i = 0; res == false && i < 2 ; i++)
{
if(child[i] != NULL)
res = Find_Node(item, child[i]);
}
return res;
}
노드를 찾는 더 좋은 방법이 있습니까? 누군가가 나를 삭제 기능으로 도와주세요.
빠른 답장을 보내 주셔서 감사합니다. 삭제 기능은 어떻습니까? –
@MohamadOmarHindi 잠깐 혼란 스러웠습니다. 나는 그 질문과 그 명백한 것을 지금 다시 읽었다. 'Node' 클래스의 구현을 바꿀 수 있습니까? 스왑 메소드를 추가하면 정말로 삭제에 도움이됩니다. – andre
예. 할 수 있습니다. 미안 나는 충분히 설명하지 않았다; 삭제하고자하는 I 노드에 하위 노드가있는 경우 삭제해야하므로 스왑이 필요 없습니다. –