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

来源:-

程序猿浩林

2017-11-19 17:37

http://img3.mukewang.com/5a11505e0001434102910221.jpg

http://img4.mukewang.com/5a11505e0001c39d01850229.jpg

照着老师的编写的,不知道哪出错了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();
}


写回答 关注

1回答

  • 程序猿浩林
    2017-11-19 17:51:24

    好吧,是我搞错了!T-T

    Node * Tree::SearchNode(int nodeIndex)

    {

        m_pRoot->SearchNode(nodeIndex);

        return m_pRoot;

    }

    要改回这个

    Node * Tree::SearchNode(int nodeIndex)

    {

    return m_pRoot->SearchNode(nodeIndex);

    }

    才行,犯了个小错误

数据结构探险之树篇

树,将为你开启更精彩的数据结构大门,了解更多概念

56500 学习 · 121 问题

查看课程

相似问题