您的位置:首页 > 其它

Recover Binary Search Tree

2015-06-08 21:09 204 查看
class Solution {

public:

TreeNode *s1,*s2,*pre;

void recoverTree(TreeNode* root) {

if(!root)return ;

s1=s2=pre=NULL;

find(root);

swap(s1->val,s2->val);

}

void find(TreeNode* root)

{

if(root==NULL) return;

find( root->left);

if(pre&&pre->val>root->val)

{

if(s1==NULL) s1=pre,s2=root;

else s2=root;

}

pre=root;

find(root->right);

}

};

中序遍历时pre 始终指向root的前一个。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: