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