二叉搜索树的后序遍历

题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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);
    }
}

  

 

posted @ 2020-03-20 11:34  xxcnotes  阅读(136)  评论(0)    收藏  举报