2012-08-12 2 views
1

이 질문은 이진 검색 트리와 관련이 있습니다. 루트가 만들어지면 여기에 내가 지금 여기트리에 노드를 추가하는 기능

struct _Node 
{ 
    _Node *Parent; 
    int Data; 
    _Node *Left; 
    _Node *Right; 
}; 

을 사용하고 노드의 정의는 노드를 추가하는 함수의 정의입니다 ADDNODE 기능이 재귀 적 접근 방식을 기반으로

void AddNode(_Node *Incoming, _Node *currentNode) 
{ 

      if(!currentNode) 
      { 
       currentNode = Incoming; 
      } 
      else if(currentNode->Data >= Incoming->Data) 
      { 
       Incoming->Parent = currentNode; 
       AddNode(Incoming, currentNode->Left); 
      } 
      else if(currentNode->Data < Incoming->Data) 
      { 
       Incoming->Parent = currentNode; 
       AddNode(Incoming, currentNode->Right); 
      } 

} 

. 메인 코드는

_Node *Root= new _Node; 
Root->Data = 50; 
Root->Parent = nullptr; 
Root->Left = nullptr; 
Root->Right = nullptr; 


_Node *Node2 = new _Node; 
Node2->Data = 25; 
Node2->Parent = nullptr; 
Node2->Left = nullptr; 
Node2->Right = nullptr; 
_Node *Node3 = new _Node; 

    AddNode(Node2, Root); 

문제입니다 : 내가 노드 추가 기능 나올 일단 나는 노드 2로 설정 왼쪽 또는 오른쪽 자식이 doesnot 그 루트 노드를 찾을 수 있습니다. 노드에 대한 포인터가 전달 될 때마다 나는 루트에 노드를 올바르게 추가해야한다고 설명했다. 이것은 일어나지 않습니다. 내가 실수하고있는 것을 이해하기 위해 여기서 나를 도울 수 있니?

답변

0

AddNode(Incoming, currentNode->Left); 

대신 Right에 대한 동일

AddNode(Incoming, Incoming->Left); 

보십시오.

+0

OO 나의 하느님 나는 내가하고 있었던 그런 어리석은 실수를 매우 유감스럽게 생각한다. .. 나는 나를 그것을 하루라고 부르는 그 시간이라고 생각한다. 너의 도움에 감사한다. – virusrocks

+0

안녕하세요,이 변화는 그래도 작동이 안되는. 실제로 이전과 같은 방식으로이 기능을 재정의하고 복사 붙여 넣기 오류가 발생했습니다. 여전히 작동하지 않습니다. – virusrocks

+0

현재 노드 포인터를 참조로 전달하려고 시도합니다. 'void AddNode (_Node * Incoming, _Node * & currentNode)' – Gir

관련 문제