zoukankan      html  css  js  c++  java
  • 判断一个数组会不会是某个二叉搜索树的后序遍历

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

    这道题的关键在于要明白,儿茶搜索树有哪些特点。任何一个左子树的值都要小于根节点的值,任何一个右子树的值都要大于根节点的值。

    根据这个特点来判断这个树是不是二叉排序树。

    一棵空树,或者是具有下列性质的二叉树
    (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
    (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
    (3)左、右子树也分别为二叉排序树;
    (4)没有键值相等的结点。
    class Solution {
    public:
        bool VerifySquenceOfBST(vector<int> sequence) {
            int len = sequence.size();
            if(len == 0)return false;
            bool isTrue = bst(sequence,0,len-1);
            return isTrue;
        }
        bool bst(vector<int> sequence,int i,int len)
        {
            int root = sequence[len];
            if(i >= len)return true;
            for(;i < len;i++)
            {
                if(sequence[i] > root)break;
            }
            int sign = i;
            for(;i<len;i++)
                if(sequence[i]<root)return false;
            return bst(sequence,i,sign-1)&&bst(sequence,sign,len-1);
        }
    };
    

      

  • 相关阅读:
    Django框架13 /缓存、信号、django的读写分离
    linux09 /消息队列、saltstack工具
    会话管理之AbpSession
    ABP之事件总线(5)
    依赖注入容器之Castle Windsor
    ABP之事件总线(4)
    ABP之事件总线(3)
    ABP之事件总线(2)
    ABP之事件总线(1)
    ABP之展现层(Datatables分页)
  • 原文地址:https://www.cnblogs.com/littleswan/p/12704072.html
Copyright © 2011-2022 走看看