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

    题目:

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

    链接:

      https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd?tpId=13&tqId=11176&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

    题目描述:

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

    思路:

      第一步:root值为序列的最后一个数,然后查找“左子树”,并判断“右子树”是否全部大于根节点root。

      第二步:分别判断左右子树,递归;

    代码:

      

     1 class Solution {
     2 public:
     3     bool VerifySquenceOfBST(vector<int> sequence){
     4         int len = sequence.size();
     5         if(len <= 0)
     6               return false;
     7         int root = sequence[len-1];
     8         int i = 0;
     9         for(;i<len-1;++i){
    10             if(sequence[i] > root)
    11                   break;                    // 找到又子树
    12         }
    13         for(int j = i; j<len-1 ; ++j){
    14             if(sequence[j] < root)
    15                   return false;
    16         }
    17         vector<int> leftVec(sequence.begin(),sequence.begin()+i);
    18         vector<int> rightVec(sequence.begin()+i,sequence.end()-1);
    19         bool left = true;
    20         bool right = true;
    21         if(i > 0){
    22             left = VerifySquenceOfBST(leftVec);
    23         }
    24         if(len - i -1>0){
    25             right = VerifySquenceOfBST(rightVec);
    26         }
    27         return left && right;
    28     }
    29 };
  • 相关阅读:
    Python内存管理机制
    哈希表(散列表)
    Python面向对象三大特性
    Python 面向对象继承
    Python面向对象 类的空间问题
    面向对象初识
    增量式爬虫
    分布式爬虫
    crawlscrapy框架
    HTML
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6938014.html
Copyright © 2011-2022 走看看