面试100问题系列的12判断序列是否是找二叉树。

判断整数序列是否是二叉查找树的后序遍历结果。

输入一个整数数组以确定该数组是否是二叉查找树的结果。

如果为真,否则为假。

例如,输入5,7,6,9,11,10,8,因为这个整数序列是以下树遍历的结果:

/ \

6 10

/ \ / \

5 7 9 11因此返回true。

如果输入7、4、6和5,没有树的后续遍历会产生这个序列,所以它返回false。

思维分析:

二叉树搜索的特点是左子树中的节点必须小于根节点,右子树中的节点必须大于根节点。好,那么你可以用根节点把数组分成两部分。步骤如下:

*从前到后遍历,找到大于根节点的第一个数字。

*从这个数判断根节点之前的数是否都大于根节点。如果不是,就不可能是二叉树后序遍历搜索的结果。

*如果前两步都没问题,那么就分别判断左子树和右子树是否合法。