注意递归中,每个递归函数中的root代表遍历中对应的结点。只要之后进入递归时的结点没改变,就可以在函数中对结点进行操作。
class Solution {
TreeNode* tmp;
public:
TreeNode* increasingBST(TreeNode* root) {
TreeNode* dummy=new TreeNode(-1);
tmp=dummy;
inorder(root);
return dummy->right;
}
void inorder(TreeNode* root){
if(!root){
return;
}
inorder(root->left);
tmp->right=root;
root->left=nullptr;
tmp=tmp->right;
inorder(root->right);
}
};