恢复两个元素错放的二叉搜索树
recover a two element miss-placed binary search tree
这是问题所在:
二叉搜索树 (BST) 的两个元素被错误地交换了。在不更改其结构的情况下恢复树。
我的解决方案是在顺序遍历期间将指向节点的指针存储在数组中。然后遍历数组以找到两个未命中定位的节点,更改它们的值。但是我需要 O(n) 空间来分配数组。我的问题是我可以用恒定空间解决它吗?
您不需要将元素存储在数组中。当交换两个元素时,其中一个元素移动到较早的位置,因此它大于在无序遍历中跟随它的元素。您无需将元素存储在数组中即可找到此内容 - 只需保留前一个节点的上下文。类似地,对于向右移动的元素,它将小于它前面的元素,因此您可以通过保持相同的上下文(1 个前面的元素)再次找到它。正如您所建议的,单个无序遍历足以找到放错位置的元素。
相关文章:
- 有根的二进制搜索树.保留与其父级的链接
- 正在尝试重载二进制搜索树分配运算符
- 使用C++创建特殊的二叉搜索树
- 在递归二叉搜索树中搜索
- 在二叉搜索树中插入新元素
- 删除二叉搜索树 (C++) 中的单个元素
- C++二叉搜索树实现不会添加每个元素
- 在二叉搜索树中查找元素
- 在C++中实现二叉搜索树,搜索不起作用.尝试打印节点的元素会导致输出崩溃
- Ram 空间在创建包含 60000 个元素的二叉搜索树时耗尽
- 如何在二叉搜索树中查找元素
- 在二进制搜索树中查找第二个最大元素
- n个元素上的二进制搜索树的数目
- 恢复两个元素错放的二叉搜索树
- 在二叉搜索树中查找第 n 个最小元素
- 如何在二叉搜索树节点中查找次要元素的平均值
- 二叉搜索树的第n个元素使用c++
- 在二进制搜索树中插入元素时出现Seg Fault 11
- 计数高度为h的二叉搜索树对n个元素的所有可能的根的个数
- 在二进制搜索树中插入元素时出错