题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
/*
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* head;
if(pRootOfTree==NULL||((pRootOfTree->left==NULL)&&(pRootOfTree->right==NULL)))
return pRootOfTree;
if(pRootOfTree->right!=NULL)
{
TreeNode* temp=Convert(pRootOfTree->right);
pRootOfTree->right=temp;
temp->left=pRootOfTree;
}
if(pRootOfTree->left!=NULL)
{
head=Convert(pRootOfTree->left);
TreeNode* t1=pRootOfTree->left;
while(t1->right!=NULL)
t1=t1->right;
t1->right=pRootOfTree;
pRootOfTree->left=t1;
return head;
}
else
return pRootOfTree;
}
};