题目描述
思路分析
二叉搜索树+中序遍历
中序遍历的过程中维护一个
p
r
e
pre
pre指针。边中序遍历边修改指针。不清楚过程的可以模拟一下。
代码实现
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
TreeNode* pre=NULL;
TreeNode* Convert(TreeNode* root) {
if(!root) return NULL;
dfs(root);
while(root&&root->left) root=root->left;
return root;
}
void dfs(TreeNode* root){
if(!root) return;
dfs(root->left);
root->left=pre;
if(pre) pre->right=root;
pre=root;
dfs(root->right);
}
};