【LeetCode】 Recover Binary Search Tree BST 中序遍历

来源:互联网 发布:知乎如何收藏文章 编辑:程序博客网 时间:2024/04/30 00:06

题目:Recover Binary Search Tree

<span style="font-size:18px;">/* * LeetCode: recover the binary search tree * 题目:二叉树中有两个节点被交换了位置,找出它们,并且将它们换回来,要求用o(n)的连续空间 * 知识点:1、BST树的特点:中序遍历后的节点的排列是按照非降的顺序 * 思路:按照特点中序遍历,当遇到逆序的节点则按照保存相关节点,注意分为,交换的两个点是否相邻的两种情况 */package javaTrain;public class Train6 {public TreeNode firstNode = null,preNode = null,secondNode = null;public int preVal = Integer.MIN_VALUE;    public void recoverTree(TreeNode root) {        if(root == null) return;         findInChild(root);                   int temp = firstNode.val;       firstNode.val = secondNode.val;       secondNode.val = temp;         return;    }    private void findInChild(TreeNode root){    if(root == null) return;    findInChild(root.left);    if(root.val < preVal){    if(firstNode == null){    firstNode = preNode;    secondNode = root;    }    else{    secondNode = root;    return;    }    }    preNode = root;    preVal = root.val;    findInChild(root.right);    }}  </span>


1 0
原创粉丝点击