首页 > 代码库 > Leetcode--Recover Binary Search Tree
Leetcode--Recover Binary Search Tree
Problem Description:
Two elements of a binary search tree (BST) are swapped by mistake.
Recover the tree without changing its structure.
Note:A solution using O(n) space is pretty straight forward. Could you devise a constant space solution?
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
OJ‘s Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where ‘#‘ signifies a path terminator where no node exists below.
Here‘s an example:
1
/ 2 3
/
4
5
The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}"
./** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode *pre,*p1,*p2; void helper(TreeNode *root) { if(root==NULL) return; helper(root->left); if(pre&&pre->val>root->val)//找到第一对逆序的两个数 { if(p1==NULL)//先找到p1 { p1=pre; p2=root; } else//如果找到第二对逆序的两个数则是p2 { p2=root; } } pre=root;//先将pre初始化为root helper(root->right); } void recoverTree(TreeNode *root) { if(root==NULL) return; pre=p1=p2=NULL; helper(root); int temp; temp=p1->val; p1->val=p2->val; p2->val=temp; return; } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。