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