【问题标题】:Checking for equality of binary search trees constructed from unsorted arrays检查由未排序数组构造的二叉搜索树的相等性
【发布时间】:2015-06-29 08:19:18
【问题描述】:

此问题已在此处提出:http://stackoverflow.com/questions/14092710/equality-of-two-binary-search-trees-constructed-from-unordered-arrays

但是,我想到的解决方案相当简单,但那里没有提到。

问题陈述为:Given two arrays which represent a sequence of keys. Imagine we make a Binary Search Tree (BST) from each array. We need to tell whether two BSTs will be identical or not without actually constructing the tree.

我想到的是,只需对两个数组进行排序。如果它们相同,那么它们的中序遍历也将相同,因此如果两个数组相同,那么它们肯定会导致相同的 BST。我假设如果两个二叉搜索树的中序遍历相同,那么树也相同,我错了吗?

【问题讨论】:

    标签: algorithm tree


    【解决方案1】:

    除非我误解了您所说的“中序遍历”是什么意思,否则这是行不通的。不仅 BST 的中序遍历不是唯一的,事实上 every BST 在同一组元素上的中序遍历也是相同的。这是一个小例子:

        4
       /\
     2/  \
     /\   \
    1  3   5
    
        2
       /\
      /  \4
     /   /\
    1   3  5
    

    两棵树都具有中序遍历 1、2、3、4、5。因此,即使树不同,您的方法也会报告“IDENTICAL”。

    您的方法实际上在另一个方向上也是错误的。如果两个 BST 具有相同的结构但元素不同,那么您应该报告“IDENTICAL”,但是它们的排序列表(= 中序遍历)当然是不同的——所以在这种情况下,您将报告“DIFFERENT”。

    【讨论】:

    • 对。我明白。明白了。
    【解决方案2】:

    只有中序遍历不能定义唯一的 BST。您必须获得另一个前/后订单遍历来重建 BST。

    【讨论】:

      猜你喜欢
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多