二叉搜索树的后序遍历序列

思路:

Paste_Image.png

后序遍历为[5,7,6,9,11,10,8]
特点,先找到根节点8,为序列最后一个元素,遍历整个序列中,大于根节点的为右子树,小于根节点的为左子树,所以可以使用递归来对子树进行同样的操作。如果遍历的过程中,先出现了大于根节点的节点,后面又出现了小于根节点的节点,则说明不是二叉搜索树的后序遍历序列。比如[7,4,6,5]这样的序列。

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        int start,end;
        start=0;
        end=sequence.length;
        if(end==0)
            return false;
        return Verify(sequence,start,end-1);
         
    }
      
    public boolean Verify(int [] sequence,int start,int end){
        int i,j;
        if(start<end){
            for(i=start;i<end;i++){
                if(sequence[i]>sequence[end])
                    break;
            }
            for(j=i;j<end;j++){
                if(sequence[j]<sequence[end])
                    break;
            }
            if(j==end)
                return Verify(sequence,start,i-1)&&Verify(sequence,i,end-1);
            else
                return false;
        }else{
              return true;
        }
          
    
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容