只遍歷了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(); }
2017-11-19
好吧,是我搞錯了!T-T
Node?*?Tree::SearchNode(int?nodeIndex)
{
????m_pRoot->SearchNode(nodeIndex);
????return?m_pRoot;
}
要改回這個
Node * Tree::SearchNode(int nodeIndex)
{
return m_pRoot->SearchNode(nodeIndex);
}
才行,犯了個小錯誤