首页 新闻 会员 周边 捐助

关于剑指offer的一个编程题。

0
[已解决问题] 解决于 2018-12-05 11:16

题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
public boolean VerifySquenceOfBST(int [] sequence) {
}

题目如上,我最后搜索大家的解题思路是:在数组的最后一个数是根节点(这点没有什么问题),从第一个数的位置到第一个能够大于根节点的数就是左子树部分,剩下的到后面根节点前的数都大于根节点的话,那么就是右子树。如果不满足根节点小于左子树,大于右子树那么显然不可能是某个树的后序遍历。

但是比如已知数: 1
/ 2 3
/   / 4 5 6 7
他的后序遍历显然就不满足上面所说的呀!。
求大佬带我走出迷雾

轻抚丶两袖风尘的主页 轻抚丶两袖风尘 | 初学一级 | 园豆:59
提问于:2018-09-05 16:48
< >
分享
最佳答案
0

考虑后序遍历的逆向。 就是右儿子优先的先序遍历。这样子来看的话 根结点就把树分成大于根结点的连续一段 和 小于根结点的连续一段。至于题主的例子我没看懂。有什么不理解的欢迎再问我:-)

奖励园豆:5
DDullahan | 菜鸟二级 |园豆:207 | 2018-09-06 19:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册