LeetCode 99. Recover Binary Search Tree Add to List
来源:互联网 发布:网络剧特点是什么 编辑:程序博客网 时间:2024/06/05 16:32
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){ return; } //利用中序遍历的上升特性 Stack<TreeNode> ts = new Stack<TreeNode>(); TreeNode ptr = root; //记录第一次出现乱序的地方 boolean flag = true; TreeNode sw1 = null, sw2 = null, pre = null; while( ptr != null || !ts.isEmpty()){ while(ptr != null){ ts.push(ptr); ptr = ptr.left; } if(!ts.isEmpty()){ //栈顶弹栈 ptr = ts.pop(); //当前访问的节点 //第一次出现乱序的地方,用flag来标志第一次乱序的地方,找到后,将flag标为false if(pre!= null && flag && pre.val > ptr.val){ //此时错误结点为pre sw1 = pre; flag = false; } //最后一次出现乱序的地方 if(pre != null && pre.val > ptr.val){ //此时错误结点为当前结点ptr sw2 = ptr; //只要满足前驱大于后继,就记录后继节点,不管是第一次乱序还是第二次乱序 } pre = ptr; //pre是ptr的前驱节点 ptr = ptr.right; } } //交换两个节点的值 int val = sw1.val; sw1.val = sw2.val; sw2.val = val; }}
0 0
- LeetCode 99. Recover Binary Search Tree Add to List
- LeetCode 98. Validate Binary Search Tree Add to List
- leetcode- Add to List 669. Trim a Binary Search Tree
- LeetCode 99. Recover Binary Search Tree
- [LeetCode]99.Recover Binary Search Tree
- [Leetcode] 99. Recover Binary Search Tree
- LeetCode --- 99. Recover Binary Search Tree
- [leetcode] 99.Recover Binary Search Tree
- leetcode 99. Recover Binary Search Tree
- Leetcode 99. Recover Binary Search Tree
- LeetCode 99. Recover Binary Search Tree
- LeetCode 99. Recover Binary Search Tree
- Leetcode 99. Recover Binary Search Tree
- LeetCode 99. Recover Binary Search Tree
- [LeetCode] 99. Recover Binary Search Tree
- leetcode-99. Recover Binary Search Tree
- LeetCode 99. Recover Binary Search Tree
- [LeetCode] 99. Recover Binary Search Tree
- 信息安全工程师 学习笔记(九)
- 360前端星计划(二)
- 线性表 链表结构的实现
- UIScrollView的多ContentView的问题
- ubuntu-C++拿到本机IP地址
- LeetCode 99. Recover Binary Search Tree Add to List
- css3字体缩放样式-webkit-text-size-adjust的用法详解
- TCP/IP四层模型
- 信息安全工程师 学习笔记(十)
- Python 类中Name mangling和下划线命名
- [codewars]6.给定的一个的阵列和零的等效二进制值转换为整数。
- 深入理解C++强制类型转换
- 0到100的猜数字游戏
- Ubuntu16.04向内核增加一个系统调用实验