【问题标题】:Output Post-Order Binary Search Tree from Given Pre-Order input without constructing tree or using recursions从给定的前序输入输出后序二叉搜索树,无需构造树或使用递归
【发布时间】:2014-06-26 19:03:37
【问题描述】:

问题描述:(语言为java)

给定一个表示二叉搜索树的前序遍历的输入数组,输出 BST 的后序遍历。

赶上:

  • 没有构建 BST 节点。
  • 没有递归。
  • O(n) 运行时间。

我已经尝试了几个小时,但仍然没有任何线索。
最难的部分是不使用树节点结构。
有人有想法吗?

【问题讨论】:

    标签: java binary-search-tree preorder postorder


    【解决方案1】:

    这里有一个提示:

    preorder遍历中,数组的第一个元素总是会是树的
    所以如果给定数组NodeElemnts[],那么NodeElemnts[0] 将是树的根

    那么,左节点位于2n+1,右节点位于2n+2n是当前数组的索引。

    从前到后:

    [root][leftChild][rightChild] (pre) -> [leftChild][rightChild][root] (post) .....想想 BFS :)

    【讨论】:

    • 感谢您的建议!问题是 BST 不是完整的树,一个节点可能有也可能没有左/右子节点。
    • 在这种情况下,您将无法找出哪个树节点具有哪个树子节点...假设该树是完整的树! :)
    • BST 很少是完整的树,除非它是 AVL 树或红黑树。如果树有一个左孩子并且右孩子是第一个大于节点的数字,则可以找到孩子,因为左孩子是 n + 1。
    猜你喜欢
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2016-07-11
    • 2013-10-24
    • 1970-01-01
    • 2013-05-12
    • 2020-08-02
    相关资源
    最近更新 更多