zoukankan      html  css  js  c++  java
  • 剑指Offer 二叉搜索树的后序遍历序列

    题目描述

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
     
    思路:
    后续遍历数组的尾部为根节点,前面的部分,必然一部分为左子树,一部分为又子树,二叉搜索树,根节点左子树小于根节点的值,右子树大于。
    所以我们只用遍历前面的部分,找到第一个大与根节点的,然后看后面是不是都是大于根节点的,如果是,size-1.
     
    AC代码:
     1 class Solution {
     2 public:
     3     bool VerifySquenceOfBST(vector<int> sequence) {
     4         int sqsize=sequence.size();
     5         int i=0;
     6         
     7         if(sqsize==0)
     8             return false;        
     9         
    10         while(i<sqsize)
    11         {
    12             while(sequence[i]<sequence[sqsize-1])
    13                 i++;
    14             while(sequence[i]>sequence[sqsize-1])
    15                 i++;
    16             
    17             if(i!=sqsize-1)
    18                 return false;
    19             i=0;
    20             sqsize--;            
    21         }
    22         return true;
    23     }
    24 };
  • 相关阅读:
    UVA 11198 Dancing Digits
    UVA 10085 The most distant state
    UVA 321 The New Villa
    UVA 10422 Knights in FEN
    poj2876
    poj2895
    poj2914
    poj2892
    poj2941
    LD SDK LDCControlDll 中 CXMLFile的进一步使用方法,建议以后改进
  • 原文地址:https://www.cnblogs.com/SeekHit/p/5833445.html
Copyright © 2011-2022 走看看