剑指offer面试题[27]-二叉搜索树与双向链表

来源:互联网 发布:access sql limit 编辑:程序博客网 时间:2024/06/07 11:47

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。


/*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);    }};


阅读全文
0 0
原创粉丝点击