【发布时间】:2014-08-18 01:19:07
【问题描述】:
问题:给定一个整数数组,确定它是否可以是 BST 的后序遍历序列。例如:[5, 7, 6, 9, 11, 10, 8] 返回 true,但 [7, 4, 6, 5] 返回 false。
我想知道我们是否可以在线性时间内做到这一点。这是我想出的N^2 和NlgN 的解决方案。
N^2 solution:扫描数组,检查根的左右子树的值分别小于和大于根的值。对每个子树重复。
NlgN solution:从输入数组的右到左构建一个 BST。跟踪我们可以在任何时候遇到的最大数量。每次我们插入一个左孩子时,这个最大数量都会更新到父节点。如果我们尝试插入一个大于跟踪的最大数量的节点,我们可以返回 false。
【问题讨论】:
标签: performance algorithm data-structures tree binary-search-tree