recover-binary-search-tree
来源:互联网 发布:软件五毛钱特效怎么玩 编辑:程序博客网 时间:2024/06/07 08:28
1、链接: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?confused what"{1,#,2,3}"means? > read more on how binary tree is serialized on OJ.OJ's Binary Tree Serialization:The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.Here's an example: 1 / \ 2 3 / 4 \ 5The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".
2、思路:二叉搜索树是否出现错误结点可以转换为中序遍历的前一个元素是否一直小于当前元素。总共分为下面两种情况:
- {0,1}
- {2,3,1}
如果出现前一个结点大于当前结点,将其记录下来即可。
3、代码:
public class RecoverSearchTree { public static void main(String[] args) { TreeNode root =new TreeNode(0); root.left = new TreeNode(1); RecoverSearchTree test = new RecoverSearchTree(); test.recoverTree(root); } private TreeNode firstErrorNode = null; private TreeNode secondErrorNode = null; private TreeNode preNode = new TreeNode(Integer.MIN_VALUE); public void recoverTree(TreeNode root) { inOrder(root); int temp = firstErrorNode.val; firstErrorNode.val = secondErrorNode.val; secondErrorNode.val = temp; } private void inOrder(TreeNode root) { if(root == null) return; inOrder(root.left); if(preNode.val >= root.val ){ if(firstErrorNode == null){ firstErrorNode = preNode; secondErrorNode = root; }else{ secondErrorNode = root; } } //为什么这样可以记录上一个元素 //因为打印的话是中序遍历的顺序,如果当前执行第一次preNode保存root //第二次执行到这句时就是当前root的上一个元素了 preNode = root; inOrder(root.right); }}
阅读全文
0 0
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- Recover Binary Search Tree
- 云转型,神码瞄准世界级的云MSP服务商
- 如何更加安全、高效地选择开源项目(内附详解)
- JavaScript高程学习笔记之客户端检测(9)
- Java中String类常用方法(字符串中的子字符串的个数)
- 欢迎使用CSDN-markdown编辑器
- recover-binary-search-tree
- CSS-标准盒模型和怪异盒模型box-sizing
- C语言预习之指针
- XML和Schema命名空间详解
- iOS Xcode升级完iOS 11后出现提交审核无法提交原因
- C 变量
- redis配置文件记录
- Fresco简单应用与实践
- [AI教程]最全人工智能图谱解析和视频下载