题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
public boolean VerifySquenceOfBST(int [] sequence) {
}
题目如上,我最后搜索大家的解题思路是:在数组的最后一个数是根节点(这点没有什么问题),从第一个数的位置到第一个能够大于根节点的数就是左子树部分,剩下的到后面根节点前的数都大于根节点的话,那么就是右子树。如果不满足根节点小于左子树,大于右子树那么显然不可能是某个树的后序遍历。
但是比如已知数: 1
/
2 3
/ /
4 5 6 7
他的后序遍历显然就不满足上面所说的呀!。
求大佬带我走出迷雾
考虑后序遍历的逆向。 就是右儿子优先的先序遍历。这样子来看的话 根结点就把树分成大于根结点的连续一段 和 小于根结点的连续一段。至于题主的例子我没看懂。有什么不理解的欢迎再问我:-)