题目描述:
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
TreeNode * con(TreeNode * root)
{
if(!root)
return NULL;
if(root->left)
{
TreeNode * pLeft = con(root->left);
while(pLeft->right)
{
pLeft = pLeft->right;
}
pLeft->right = root;
root->left = pLeft;
}
if(root->right)
{
TreeNode * pRight = con(root->right);
while(pRight->left)
{
pRight = pRight->left;
}
pRight->left = root;
root->right = pRight;
}
return root;
}
TreeNode* Convert(TreeNode* pRootOfTree)
{
if(!pRootOfTree)
return NULL;
TreeNode * res = con(pRootOfTree);
while(res->left)
res = res->left;
return res;
}
};