[LeetCode] Recover Binary Search Tree
来源:互联网 发布:什么批发软件最好用 编辑:程序博客网 时间:2024/06/06 11:37
wo 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.
SOLUTION: use inorder traversal to check whether every node is in increasing order. Keep two pointers to the nodes out of order.
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: //return the previous visited node TreeNode* inorder(TreeNode *root,TreeNode *prev, TreeNode*& n1, TreeNode*& n2) { if(root==NULL) return prev; prev=inorder(root->left,prev,n1,n2); //check whether the root is out of order if(prev!=NULL && root->val < prev->val) { if(n1==NULL) n1=prev; //swap nodes n2=root; } prev=root; return inorder(root->right,prev,n1,n2); } void recoverTree(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function TreeNode *n1=NULL; TreeNode *n2=NULL; TreeNode *parent=NULL; inorder(root,parent,n1,n2); if(n1!=NULL && n2!=NULL) { int tmp=n1->val; n1->val=n2->val; n2->val=tmp; } }};
- LeetCode: Recover Binary Search Tree
- LeetCode: Recover Binary Search Tree
- [Leetcode] Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- [Leetcode] Recover Binary Search Tree
- [leetcode] recover binary search tree
- LeetCode -- Recover Binary Search Tree
- [LeetCode]Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- LeetCode:Recover Binary Search Tree
- [Leetcode]Recover Binary Search Tree
- Leetcode: Recover Binary Search Tree
- LeetCode-Recover Binary Search Tree
- [leetcode] Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- 【Leetcode】Recover Binary Search Tree
- Leetcode Recover Binary Search Tree
- LeetCode | Recover Binary Search Tree
- linux修改yum本地源的方法分享
- C# ListView用法详解
- JSON.stringify(Object)
- banana位置特效收集
- Android学习之Service命令的妙用
- [LeetCode] Recover Binary Search Tree
- [log4j] PatternLayout的用法
- List--Reorder1
- 分享个基于html5的开源的图表组件
- OAuth的机制原理讲解及开发流程
- dede 梦织生成xml 网站地图
- 分享:yum命令技巧总结
- R图形
- 手游更注重的是运营平台