我目前正在使用C ++学习数据结构。 我了解插入新节点时如何平衡二叉搜索树。
但是,如果您已经有一个退化的树(单个链接列表),并且想要在不创建新树的情况下实现平衡,该怎么办? 总之,如何使用现有节点将退化的树重组为完整的树? (使用旋转方法)
例如,我的节点持有以下9个节点的数据:1、3、6、9、12、15、18、21、24
为此,我需要推迟启动。我不确定从哪里开始。谢谢您的帮助。
答案 0 :(得分:1)
简并树只是一个排序的链表。找到列表的中间元素,在列表的中间删除列表的开头,并将其附加到中间元素的左侧。现在,您将中间元素作为根,并且在每一侧都有两个退化的树(链接列表)。对每一面递归地重复此过程。