【发布时间】:2018-09-04 09:35:44
【问题描述】:
(我看过一些非常相似的练习,但它们都是针对常规二叉树的)。如标题所示,我必须提出一种算法,将 BST 转换为另一个具有对称结构的 BST,其中包含与前一个相同的值。例如
我的想法是从一开始就建造一棵新树。我将从一个新的根开始,该根位于原始树的排序数组中的原始根的对称位置。在上面的例子中: 3 5 6 7 12 数字 7 将是新的根,因为与之前的根 5 相比,它的左侧/右侧的节点数颠倒了。但这并不能完全解决问题,因为新树取决于插入的顺序。我想根据平衡进行旋转来结束它。我的问题是:这棵树是否必须是 AVL 树才能执行旋转(这意味着练习中有错误)。或者有没有更简单的方法来解决这个问题?
【问题讨论】:
标签: algorithm binary-search-tree avl-tree