CODE 34: Recover Binary Search Tree
来源:互联网 发布:matlab教程矩阵 编辑:程序博客网 时间:2024/06/05 04:25
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 \ 5The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}"
.public void recoverTree(TreeNode root) {// Start typing your Java solution below// DO NOT write main() functionArrayList<TreeNode> list = inorder(root);TreeNode err1 = null;TreeNode err2 = null;for (int i = 0; i < list.size() - 1; i++) {if (list.get(i).val > list.get(i + 1).val) {if (null == err1) {err1 = list.get(i);} else {err2 = list.get(i + 1);break;}}}if (null != err1 && null != err2) {int tmp = err1.val;err1.val = err2.val;err2.val = tmp;} else if (null != err1) {int index = list.indexOf(err1);int tmp = list.get(index + 1).val;list.get(index + 1).val = err1.val;err1.val = tmp;}}ArrayList<TreeNode> inorder(TreeNode node) {if (null == node.left && null == node.right) {ArrayList<TreeNode> list = new ArrayList<TreeNode>();list.add(node);return list;}ArrayList<TreeNode> list = null;if (null != node.left) {list = inorder(node.left);}if (null == list) {list = new ArrayList<TreeNode>();}list.add(node);if (null != node.right) {ArrayList<TreeNode> listRight = inorder(node.right);list.addAll(listRight);}return list;}
- CODE 34: Recover Binary Search Tree
- recover-binary-search-tree Java code
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- URAL 1741 Communication Fiend
- 比较两个文件相同的地方
- POJ 2479 Maximum sum(DP)
- 调用栈
- C语言运算符优先级 详细列表
- CODE 34: Recover Binary Search Tree
- priority_queue用法小结
- hdu 1890伸展树(splay tree)区间翻转
- My Summer at Mozilla
- 数据结构之(平衡二叉树)
- Spring中AOP的几个概念
- 尺取法--poj3320
- CODE 26: Binary Tree Level Order Traversal II
- Java面试题之九