题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
tips: 使用递归,使用一个指针的引用,来记录转换为链表后的最后一个元素
class Solution {
public:
TreeNode* Convert(TreeNode* pRootOfTree)
{
if(pRootOfTree==NULL) {
return NULL;
}
TreeNode* pLast=NULL;
cursiveConvert(pRootOfTree,pLast);
while(pLast->left) {
pLast=pLast->left;
}
return pLast;
}
void cursiveConvert(TreeNode* pRoot,TreeNode*& pLast) {
if(pRoot==NULL) {
return;
}
cursiveConvert(pRoot->left,pLast);
if(pLast!=NULL) {
pRoot->left=pLast;
pLast->right=pRoot;
}
pLast=pRoot;
cursiveConvert(pRoot->right,pLast);
}
};