首页 > 代码库 > 【LeetCode】Recover Binary Search Tree
【LeetCode】Recover Binary Search Tree
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?
public class Solution { public void recoverTree(TreeNode root) { if(root!=null){ Stack<TreeNode> stack = new Stack<TreeNode>(); TreeNode cur = root; int min=Integer.MIN_VALUE; int preint = Integer.MIN_VALUE; TreeNode pre=root; TreeNode after=pre; boolean bol = true; while(!stack.isEmpty()||cur!=null){ while(cur!=null){ stack.push(cur); cur=cur.left; } if(!stack.isEmpty()){ int temp = stack.peek().val; if(bol&&temp>preint){ preint = temp; pre=stack.peek(); } if(bol&&temp<preint){ bol=false; min=temp; after=stack.peek(); cur=stack.peek().right; stack.pop(); continue; } if(!bol&&temp<min){ min=temp; after=stack.peek(); } cur=stack.peek().right; stack.pop(); } } int tt = pre.val; pre.val=after.val; after.val=tt; } } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。