void ConvertNode(BtNode* pNode,BtNode** pLastNodeInList)
{
if(pNode == NULL)
return;
BtNode* pCurrent = pNode;
if(pCurrent->m_pleft != NULL)
ConvertNode(pCurrent->m_pleft,pLastNodeInList);
pCurrent->m_pleft = *pLastNodeInList;
if(*pLastNodeInList != NULL)
(*pLastNodeInList)->m_pright = pCurrent;
*pLastNodeInList = pCurrent;
if(pCurrent->m_pright != NULL)
ConvertNode(pCurrent->m_pright,pLastNodeInList);
}
//
BtNode* Convert(BtNode* pRootOFTree)
{
BtNode* pLastNodeInList = NULL;
ConvertNode(pRootOFTree,&pLastNodeInList);
// pLastNodeInList指向双向链表的尾结点
//返回头节点
BtNode* pHeadOFList = pLastNodeInList;
while(pHeadOFList != NULL && pHeadOFList->m_pleft != NULL)
{
pHeadOFList = pHeadOFList->m_pleft;
}
return pHeadOFList;
}