LeetCode--Recover Binary Search Tree
来源:互联网 发布:php 字符串转换成html 编辑:程序博客网 时间:2024/05/19 18:13
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)的思路就是直接中序遍历,然后开一个数组存放所有的元素,找到交换位置的两个元素,最后重新遍历,把两个元素交换。
常数空间的思路就是一次中序遍历,用三个指针,s1,s2,pre分别记录要交换的两个指针和root前一个指针,然后注意第一次找到的一定是要交换的s1指针,但是可能第二次找到的不是最终要交换的s2指针,还需要继续遍历,更新pre和root,找到最后需要交换的s2指针。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* s1,*s2,*pre; void dfs(TreeNode* root){ if(!root) return; dfs(root->left); if(pre&&pre->val>root->val){ if(s1==NULL){ s1=pre; s2=root; } else s2=root; } pre=root; dfs(root->right); } void recoverTree(TreeNode* root) { if(!root) return; s1=s2=pre=NULL; dfs(root); swap(s1->val,s2->val); }};
阅读全文
0 0
- LeetCode: Recover Binary Search Tree
- LeetCode: Recover Binary Search Tree
- [Leetcode] Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- [Leetcode] Recover Binary Search Tree
- [leetcode] recover binary search tree
- LeetCode -- Recover Binary Search Tree
- [LeetCode]Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- LeetCode:Recover Binary Search Tree
- [Leetcode]Recover Binary Search Tree
- Leetcode: Recover Binary Search Tree
- LeetCode-Recover Binary Search Tree
- [leetcode] Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- 【Leetcode】Recover Binary Search Tree
- Leetcode Recover Binary Search Tree
- LeetCode | Recover Binary Search Tree
- Qt之鼠标样式特效探索样例
- POI设置样式之类
- SpringCloud零基础上手(二)——SpringBoot多模块maven项目
- Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别
- FPGA基础知识篇----深入学习串口模块
- LeetCode--Recover Binary Search Tree
- 第3章 高级装配
- java 输出字节流
- ES6你必须掌握的新特性
- 第12周项目2 Kruskal算法的验证
- 2017新疆农业机械展览会(新疆农机展)会刊(参展商名录)
- 制作HTML5游戏1
- jquery的显示隐藏
- 如何查看linux系统安装了哪些服务?