您的位置:首页 > 编程语言 > Java开发

[leetcode]99. Recover Binary Search Tree@Java解题报告

2017-08-05 11:02 309 查看
https://leetcode.com/problems/recover-binary-search-tree/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?

package go.jacob.day805;

public class Demo2 {
//firstElem第一个被交换的element,secondElem被交换的element
TreeNode firstElem = null, secondElem = null;
//把上一个节点初始化为最小值
TreeNode preElem = new TreeNode(Integer.MIN_VALUE);

public void recoverTree(TreeNode root) {
// 中序遍历
inOrderTraverse(root);

int tmp = firstElem.val;
firstElem.val = secondElem.val;
secondElem.val = tmp;
}

private void inOrderTraverse(TreeNode root) {
if (root == null)
return;
inOrderTraverse(root.left);
// 1234567到1264537
if (firstElem == null && preElem.val >= root.val) {
firstElem = preElem;
}
if (firstElem != null && preElem.val >= root.val) {
secondElem = root;
}

preElem = root;
inOrderTraverse(root.right);
}

private class TreeNode {
int val;
TreeNode left;
TreeNode right;

TreeNode(int x) {
val = x;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: