二叉搜索树转换为排序双向链表,需利用二叉搜索树的特点:
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
则中序遍历序列即为有序的。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
TreeNode* pre=nullptr;
TreeNode* Convert(TreeNode* pRootOfTree) {
TreeNode* root=pRootOfTree;
while(root&&root->left){
root=root->left;
}
inorder(pRootOfTree);
return root;
}
void inorder(TreeNode* root){
if(!root)
return;
inorder(root->left);
root->left=pre;
if(pre){
pre->right=root;
}
pre=root;
inorder(root->right);
}
};


京公网安备 11010502036488号