leetcode 99 Recover Binary Search Tree ----- java

Posted xiaoba1203

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 99 Recover Binary Search Tree ----- java相关的知识,希望对你有一定的参考价值。

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?

 

给定一个排序二叉树,然后任意交换了其中两个节点,要求在使用常数个空间和不改变结构的前提下恢复原来的二叉树。

 

 

如果用O(n)的空间复杂度,那么直接中序遍历就好了,现在用常数个,那么只需要记录两次就好了,中序遍历的时候,需要动动脑子。

 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
   TreeNode pre;        
    TreeNode first;    
    TreeNode second;
    
    public void inorder(TreeNode root){
        if(root == null){
            return;
        }
        inorder(root.left);
        if(pre == null){
            pre = root;
        }else{
            if(pre.val > root.val){
                if(first == null){
                    first = pre;        
                }
                second = root;        
            }
            pre = root;                
        }
        inorder(root.right);
    }
    
    public void recoverTree(TreeNode root) {
        pre = null;            
        first = null;
        second = null;
        inorder(root);
        if(first!=null && second!=null){    
            int tmp = first.val;
            first.val = second.val;
            second.val = tmp;
        }
    }

}

 

 

 


以上是关于leetcode 99 Recover Binary Search Tree ----- java的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 99. Recover Binary Search Tree

Leetcode 99. Recover Binary Search Tree

LeetCode OJ 99. Recover Binary Search Tree

leetcode 99 Recover Binary Search Tree ----- java

[LeetCode] 99. Recover Binary Search Tree Java

LeetCode-99-Recover Binary Search Tree