剑指offer——面试题27:二叉搜索树与双向链表

来源:互联网 发布:淘宝提交大学生认证 编辑:程序博客网 时间:2024/06/09 16:21

BinaryTreeNode* Convert(BinaryTreeNode* pRootOfTree){    BinaryTreeNode *pLastNodeInList = NULL;    ConvertNode(pRootOfTree, &pLastNodeInList);    // pLastNodeInList指向双向链表的尾结点,    // 我们需要返回头结点    BinaryTreeNode *pHeadOfList = pLastNodeInList;    while(pHeadOfList != NULL && pHeadOfList->m_pLeft != NULL)        pHeadOfList = pHeadOfList->m_pLeft;    return pHeadOfList;}void ConvertNode(BinaryTreeNode* pNode, BinaryTreeNode** pLastNodeInList){    if(pNode == NULL)        return;    BinaryTreeNode *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);}


0 0