package com.interview.algorithms.tree; import com.interview.basics.model.tree.BinaryTreeNode; /** * Created with IntelliJ IDEA. * User: stefanie * Date: 11/11/14 * Time: 11:52 AM */ public class C5_28_RecoverBST { BinaryTreeNode<Integer> first = null; BinaryTreeNode<Integer> second = null; BinaryTreeNode<Integer> last = new BinaryTreeNode(Integer.MIN_VALUE); ; private void traverse(BinaryTreeNode<Integer> root){ if(root == null) return; traverse(root.left); if(first == null && root.value < last.value) first = last; if(first != null && root.value < last.value) second = root; last = root; traverse(root.right); } public void recoverTree(BinaryTreeNode<Integer> root) { traverse(root); if(first != null && second != null){ int temp = first.value; first.value = second.value; second.value = temp; } } }