只遍历了3个数,后面插入的被吃了


照着老师的编写的,不知道哪出错了T-T
Tree::Tree()
{
m_pRoot = new Node();
}
Tree::~Tree()
{
DeleteNode(0, NULL);
/*m_pRoot->DeleteNode();*/ //单参数的情况下可以用这个
}
Node * Tree::SearchNode(int nodeIndex)
{
m_pRoot->SearchNode(nodeIndex);
return m_pRoot;
}
bool Tree::AddNode(int nodeIndex, int direction, Node * pNode)
{
Node *temp = SearchNode(nodeIndex);
if (temp == NULL)
{
return false;
}
Node *node = new Node();
if (node == NULL)
{
return false;
}
node->index = pNode->index;
node->data = pNode->data;
node->pParent = temp;
if (direction == 0)
{
if (temp->pLChild != NULL)
{
return false;
}
temp->pLChild = node;
}
if (direction == 1)
{
if (temp->pRChild != NULL)
{
return false;
}
temp->pRChild = node;
}
return true;
}
bool Tree::DeleteNode(int nodeIndex, Node * pNode)
{
Node *temp = SearchNode(nodeIndex);
if (temp == NULL)
{
return false;
}
if (pNode != NULL)
{
pNode->index = temp->index;
pNode->data = temp->data;
}
temp->DeleteNode();
return true;
}
void Tree::PreorderTraverse()
{
m_pRoot->PreorderTraverse();
}
void Tree::InorderTraverse()
{
m_pRoot->InorderTraverse();
}
void Tree::PostorderTraverse()
{
m_pRoot->PostorderTraverse();
}