LeetCode 99 Recover Binary Search Tree
来源:互联网 发布:适合mac的鼠标 编辑:程序博客网 时间:2024/05/24 06:35
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?
思路;递归。使用递归查找左子树的最大节点,使用递归查找右子树的最小节点;
1若左子树的最大节点的值比右子树的最小节点大,说明是左子树的最大节点与右子树的最小节点进行了交换;
2若若左子树的最大节点的值比根节点大,说明是根节点与左子树的最大节点进行了交换;
3若若右子树的最大节点的值比根节点小,说明是根节点与右子树的最小节点进行了交换;
4若上述三种情况均没有发生,则说明左子树的某两个节点进行了交换或者右子树的某两个节点进行了交换,递归查看左子树和右子树是否有节点进行了交换;
public class Solution {private TreeNode findMin(TreeNode root) {TreeNode result, l = root, r = root;if (root.left != null)l = findMin(root.left);if (root.right!= null)r = findMin(root.right);result = l.val < r.val ? l : r;return result.val < root.val ? result : root;}private TreeNode findMax(TreeNode root) {TreeNode result, l = root, r = root;if (root.left != null)l = findMax(root.left);if (root.right != null)r = findMax(root.right);result = l.val > r.val ? l : r;return result.val > root.val ? result : root;}public void recoverTree(TreeNode root) {TreeNode l=root,r=root;if(root==null||(root.left==null&&root.right==null)) return;if(root.left!=null) l=findMax(root.left);if(root.right!=null) r=findMin(root.right);if(l.val>r.val){int temp=l.val;l.val=r.val;r.val=temp;return ;}else if(l.val>root.val){int temp=l.val;l.val=root.val;root.val=temp;return ;}else if(r.val<root.val){int temp=r.val;r.val=root.val;root.val=temp;return ;}else{recoverTree(root.left);recoverTree(root.right);}}}
0 0
- LeetCode 99: Recover Binary Search Tree
- LeetCode(99)Recover Binary Search Tree
- LeetCode 99 Recover Binary Search Tree
- LeetCode(99) Recover Binary Search Tree
- [leetcode 99] Recover Binary Search Tree
- [leetcode]99 Recover Binary Search Tree
- leetcode || 99、Recover Binary Search Tree
- 【LeetCode #99】Recover Binary Search Tree
- leetcode 99: Recover Binary Search Tree
- [leetcode-99]Recover Binary Search Tree(java)
- leetCode 99: Recover Binary Search Tree
- LeetCode(99) Recover Binary Search Tree
- LeetCode 99: Recover Binary Search Tree
- LeetCode 99:Recover Binary Search Tree
- (leetcode 99) Recover Binary Search Tree
- leetcode 99 Recover Binary Search Tree (python)
- LeetCode #99: Recover Binary Search Tree
- Leetcode 99 Recover Binary Search Tree
- JQuery点击按钮跳到当前页面指定的div和跳到顶部或底部
- SMS测试注意点
- 逗B少年搞程序番外篇 人山人海,我自独白
- CentOS 6.5 更新到最新firefox的方法
- 黑马程序员 C语言 - 09 预处理指令、typedef、extern、static
- LeetCode 99 Recover Binary Search Tree
- iphone 应用学习所有代码
- (三)unity4.6Ugui中文教程文档-------概要-UGUI Basic Layout
- SDUT2465其实玩游戏也得学程序(BFS记录路径问题)
- Hash学习(二) ---- ACM
- poj 2488
- 苹果
- 重读网络挖掘中community detection 文章--Fast unfolding of communities in large networks
- linux 动态库(.so)的搜索路径