示例#1
0
 private void inOrder(TreeNode curr, Wrap w) {
   if (curr == null) return;
   inOrder(curr.left, w);
   if (w.prev != null && w.prev.val > curr.val) {
     if (first == null) {
       first = w.prev;
     }
     second = curr;
   }
   w.prev = curr;
   inOrder(curr.right, w);
 }
示例#2
0
 public void recoverTree(TreeNode root) {
   // Start typing your Java solution below
   // DO NOT write main() function
   first = null;
   second = null;
   //        inOrder(root, null);
   Wrap w = new Wrap();
   w.prev = null;
   inOrder(root, w);
   int tmp = first.val;
   first.val = second.val;
   second.val = tmp;
 }