博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Recover Binary Search Tree 复原二叉搜索树
阅读量:4184 次
发布时间:2019-05-26

本文共 943 字,大约阅读时间需要 3 分钟。

题目:
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)的解法很直观,这种解法需要用到递归,用中序遍历树,并将所有节点存到一个一维向量中,把所有节点值存到另一个一维向量中,然后对存节点值的一维向量排序,在将排好的数组按顺序赋给节点。

实现代码如下:

// O(n) space complexityclass Solution {public:    void recoverTree(TreeNode *root) {        vector
list; vector
vals; inorder(root, list, vals); sort(vals.begin(), vals.end()); for (int i = 0; i < list.size(); ++i) { list[i]->val = vals[i]; } } void inorder(TreeNode *root, vector
&list, vector
&vals) { if (!root) return; inorder(root->left, list, vals); list.push_back(root); vals.push_back(root->val); inorder(root->right, list, vals); }};

转载地址:http://yxuoi.baihongyu.com/

你可能感兴趣的文章
Redis热点Key发现及常见解决方案
查看>>
各种IO模型,一篇打尽
查看>>
finalize() 原理
查看>>
Mysql 锁
查看>>
详解 MySql InnoDB 中意向锁的作用
查看>>
论 MySql InnoDB 如何通过插入意向锁控制并发插入
查看>>
详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)
查看>>
Mysql 锁的测试
查看>>
BeanPostProcessor的五大接口
查看>>
promotion failed和concurrent mode failure
查看>>
垃圾回收器学习之Full GC和CMS GC的区别
查看>>
Java JUnit 单元测试小结
查看>>
volatile关键字解析
查看>>
nginx upstream failover 容错机制
查看>>
java中,创建子类对象时,父类对象会也被一起创建么?
查看>>
nginx配置 -- 让匹配路径不作为文件目录的一部分
查看>>
Redis为什么是单线程的?
查看>>
Treiber Stack介绍
查看>>
FutureTask源码解读
查看>>
Redis架构之防雪崩设计:网站不宕机背后的兵法
查看>>