• 剑指offer22-二叉搜索树的后续遍历序列


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

    思路:符合二叉搜索树的后续遍历序列应该具备这样的特点:

    序列划分为三部分,第一部分左侧,比最后一个元素小;

    第二部分右侧,壁最后一个元素大;

    第三部分,最后一个元素。

    那么判断一个序列是否是该序列的方法:从序列左侧开始访问,标记第一个比最后一个元素大的元素,从此元素开始,到最后一个元素前一个元素,若遇到比最后一个元素小的元素则不符合。

    递归方式:

        bool VerifySquenceOfBST(vector<int> sequence) {
            //二叉搜索树后序遍历
            if(sequence.empty()) return false;
           return Verify(sequence,0,sequence.size()-1);
        }
        bool Verify(vector<int>seq,int left,int right)
        {
            if(left>=right) return true;
            int mid;
            for(int i=left;i<right;i++)
            {
                if(seq[i]>=seq[right])
                {
                    mid=i-1;
                    break;
                }
                
            }
            for(int i=mid+1;i<right;i++)
            {
                if(seq[i]<seq[right])
                    return false;
            }
            return Verify(seq,left,mid)&&Verify(seq,mid+1,right-1);
        }

  • 相关阅读:
    浅谈关于JavaScript解析XML文件的注意事项
    个人总结的Struts2拦截器使用和拦截栈的配置,基于注解的方式
    使用Awstats统计部署在tomcat中的网站数据
    spring4.x + hibernate4.x 配置详解
    Java内部类总结
    Java中static的使用
    Java多线程基础知识总结
    Java线程经典面试题
    C#/.net七牛云存储上传图片(文件)操作
    Special Solver Parameters
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12966629.html
Copyright © 2020-2023  润新知