recover-binary-search-tree Java code
2017-10-31 12:39
316 查看
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}”.
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 * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ import java.util.*; public class Solution { public void recoverTree(TreeNode root) { //可以和上一题 的思路一样,还是通过中序遍历 来做 ArrayList<TreeNode> list = new ArrayList<TreeNode>(); if(root == null){ return; } inorder(root,list); //找到两个出错的节点 int i; int j; for ( i = 0; i < list.size() - 1; i ++) { if(list.get(i).val > list.get(i + 1).val) { break; } } for (j = list.size() - 1; j > 0; j --) { if(list.get(j).val < list.get(j - 1).val) { break; } } int temp = list.get(i).val; list.get(i).val = list.get(j).val; list.get(j).val = temp; } private static void inorder(TreeNode root,List list){ if(root != null){ inorder(root.left,list); list.add(root); inorder(root.right,list); } } }
相关文章推荐
- CODE 34: Recover Binary Search Tree
- leecode 解题总结:99. Recover Binary Search Tree
- Recover Binary Search Tree (Java)
- [Leetcode][JAVA] Recover Binary Search Tree (Morris Inorder Traversal)
- leetcode:Recover Binary Search Tree 【Java】
- leetcode99 Recover Binary Search Tree java 算法
- Recover Binary Search Tree leetcode java
- convert-sorted-list-to-binary-search-tree Java code
- convert-sorted-array-to-binary-search-tree Java code
- [Leetcode] Recover Binary Search Tree (Java)
- [leetcode-99]Recover Binary Search Tree(java)
- Recover Binary Search Tree Leetcode Java
- [LeetCode][Java] Recover Binary Search Tree
- Java for LeetCode 099 Recover Binary Search Tree
- validate-binary-search-tree Java code
- Recover Binary Search Tree BST找乱序的两个元素 @LeetCode
- leetcode[99] Recover Binary Search Tree
- Leetcode Recover Binary Search Tree
- leetcode--Recover Binary Search Tree*
- Recover Binary Search Tree:使用常数空间复原二叉搜索树