剑指offer面试题[27]-二叉搜索树与双向链表
2017-07-30 12:01
483 查看
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
TreeNode* Convert(TreeNode* pRootOfTree)
{
TreeNode* pLastNodeInList=NULL;
ConvertNode(pRootOfTree,&pLastNodeInList);
TreeNode* pHeadOfList=pLastNodeInList;
while(pHeadOfList!=NULL&&pHeadOfList->left!=NULL)
pHeadOfList=pHeadOfList->left;
return pHeadOfList;
}
void ConvertNode(TreeNode* pRootOfTree,TreeNode* *pLastNodeInList)
{
if(pRootOfTree==NULL)
return;
TreeNode* pCurrent=pRootOfTree;
if(pCurrent->left!=NULL)
ConvertNode(pCurrent->left,pLastNodeInList);
pCurrent->left=*pLastNodeInList;
if(*pLastNodeInList!=NULL)
(*pLastNodeInList)->right=pCurrent;
*pLastNodeInList=pCurrent;
if(pCurrent->right!=NULL)
ConvertNode(pCurrent->right,pLastNodeInList);
}
};
相关文章推荐
- 剑指offer 面试题27 二叉搜索树与双向链表
- 剑指offer之面试题27:二叉搜索树与双向链表
- 剑指offer--面试题27:二叉搜索树与双向链表--Java实现
- 剑指offer 面试题27—二叉搜索树与双向链表
- 剑指offer-面试题27-二叉搜索树与双向链表
- 剑指offer 面试题27 二叉搜索树转换为排序双向链表
- 剑指Offer-面试题27:二叉搜索树与双向链表
- 【剑指Offer学习】【面试题27:二叉搜索树与双向链表】
- 剑指offer——面试题27:二叉搜索树与双向链表
- [剑指offer]面试题27 二叉搜索树与双向链表
- 【面试题】剑指Offer-27-将二叉搜索树转换成排序的双向链表
- 剑指Offer面试题27(Java版):二叉搜索树与双向链表
- 【剑指offer】4.4分解让复杂问题简单化——面试题27:二叉搜索树与双向链表
- 【剑指Offer学习】【面试题27:二叉搜索树与双向链表】
- 剑指Offer面试题27(Java版):二叉搜索树与双向链表
- 剑指Offer27:二叉搜索树与双向链表
- 【剑指Offer面试题】 九度OJ1503:二叉搜索树与双向链表
- 剑指Offer 27 二叉搜索树与双向链表
- 剑指offer解题报告(Java版)——二叉搜索树转换为双向链表 27
- 剑指offer 27二叉搜索树与双向链表