二叉搜索树的后序遍历
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
题目详解

二叉搜索树:左子树均小于根节点,右子树均大于根节点。
此二叉搜索树的后序遍历为 5 7 6 9 11 10 8
第一步:先找出根节点 8。 再找出左节点为5 7 6、右节点为 9 11 10。若出现右节点小于根节点8,则不符合二叉搜索树。
第二步:再找出根节点6 与 10。重复步骤
如果最后搜索完全部符合条件,则为真。
if(start>=end){
return true;
}
完整程序
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if (sequence.length == 0){
return false;
}
if (sequence.length == 1){
return true;
}
return judge(sequence,0,sequence.length-1);
}
public boolean judge(int[] seq,int start,int end){
if(start>=end){
return true;
}
int i = start;
while(seq[i]<seq[end]){
i++;
}
for(int j = i;j<end;j++){
if (seq[j]<seq[end]){
return false;
}
}
return judge(seq,start,i-1) && judge(seq,i,end-1);
}
}

浙公网安备 33010602011771号