【问题标题】:BST conversion to the tree of symmetric structureBST 转换为对称结构树
【发布时间】:2018-09-04 09:35:44
【问题描述】:

(我看过一些非常相似的练习,但它们都是针对常规二叉树的)。如标题所示,我必须提出一种算法,将 BST 转换为另一个具有对称结构的 BST,其中包含与前一个相同的值。例如

我的想法是从一开始就建造一棵新树。我将从一个新的根开始,该根位于原始树的排序数组中的原始根的对称位置。在上面的例子中: 3 5 6 7 12 数字 7 将是新的根,因为与之前的根 5 相比,它的左侧/右侧的节点数颠倒了。但这并不能完全解决问题,因为新树取决于插入的顺序。我想根据平衡进行旋转来结束它。我的问题是:这棵树是否必须是 AVL 树才能执行旋转(这意味着练习中有错误)。或者有没有更简单的方法来解决这个问题?

【问题讨论】:

    标签: algorithm binary-search-tree avl-tree


    【解决方案1】:

    我会分两步解决这个问题:

    1. 交换每个节点的左右子指针。这将从左到右镜像树,颠倒所有值的顺序。
    2. 从头开始​​按顺序向前遍历,从结尾按顺序向后遍历。继续锁定步骤,​​在向前和向后位置之间交换值,直到它们相遇。这会将值的顺序反转回其原始顺序,同时保留新的树结构。

    【讨论】:

      猜你喜欢
      • 2021-08-07
      • 2018-11-14
      • 1970-01-01
      • 2022-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多