剑指offer——面试题27:二叉搜索树与双向链表
2016-12-02 17:34
543 查看
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);
}
相关文章推荐
- 【Todo】Java类面试题分析
- 剑指offer——面试题26:复杂链表的复制
- 【Todo】找出共同好友 & Spark & Hadoop面试题
- 初级程序员 - List.contains()的问题
- 剑指offer——面试题25:二叉树中和为某一值的路径
- 程序员的几个阶段-转
- 让程序员跳槽的非钱原因-转
- 当面试官问“你有什么问题想问的?”,怎么破比较好?!(转)
- 面试题--String s=new String("xyz"); 创建了几个对象
- 程序员装X指南(转载)
- 一道看似简单的面试题
- 一道面试题:怎么比较两个集合是否相等?(转)
- 简单面试题--值传递还是引用传递
- 一道SQL面试题(行列互换)
- 优秀程序员的性格--why (转)
- 什么是码农
- html&css常见面试题(1)
- Java面试题全集(下)
- Java面试题全集(中)
- 程序员该如何规划自己的人生