递归,中序遍历,重要的是用一个全局节点保存前一个节点的值,然后root左指针置空。
class Solution {
public:
TreeNode* pre=new TreeNode(-1);
TreeNode* cur=pre;
TreeNode* increasingBST(TreeNode* root) {
dfs(root);
return cur->right;
}
void dfs(TreeNode *root){
if (!root) return;
dfs(root->left);
pre->right=root;
root->left=nullptr;
pre=root;
dfs(root->right);
}
};