【问题标题】:how to implement BST inorder traversal?如何实现BST中序遍历?
【发布时间】:2011-10-18 05:36:04
【问题描述】:

其实我想知道的不是如何实现BST的中序遍历算法,而是仅使用BST的插入、删除和前序遍历算法来实现。
您可以假设您已获得用于插入、删除和前序遍历的标准 BST 算法的实现。

【问题讨论】:

  • 你搜索过吗?看看这个link

标签: search binary-tree binary-search-tree tree-traversal inorder


【解决方案1】:

嗯...假设我们在根节点有 +,在左节点有 1,在右节点有 2。预购将是+ 1 2,顺序是1 + 2.. 不同之处在于第一个和第二个已经交换,所以如果你有插入和删除,你可以递归地交换每个根节点值与其左节点值然后使用前序遍历将返回的树将导致中序遍历。

我不确定这是否是要走的路,但我希望它会有所帮助。

【讨论】:

  • Ankur,你好像哪里出了问题。我们可以删除和插入一个元素,但它不会交换这两个元素,因为所有的插入和删除操作都会发生,它们会保护二进制搜索属性。
【解决方案2】:

我想我找到了解决办法。 :)

我们有前序遍历、插入和删除方法。

假设我们得到了一个 BST。

我们所做的是,我们为给定的 BST 提供了前序遍历方法。由于前序遍历总是先到父节点,所以我们递归删除并插入每个根(因为根是我们遇到的第一个父)节点,直到根的左子树为空。

现在您开始删除根,直到没有节点为止。将这些已删除的节点放入数组或您想要的任何位置。您将获得已排序的节点集。 (即节点将按排序顺序删除。最小的在前,依此类推...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2021-03-25
    相关资源
    最近更新 更多