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

    描述

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜索树)
     
    求解思路:
    1. 通过递归依次判断子序列是否满足二叉搜索树构建条件。

    代码:

     1 class Solution {
     2 public:
     3     bool VerifySquenceOfBST(vector<int> sequence) {
     4         // 不好找后序遍历有什么特点,那就根据这个序列判断是否满足二叉搜索树构建条件
     6         if(sequence.empty()){
     7             return false;
     8         }
     9         return correctST(sequence);
    10     }
    11     
    12     bool correctST(vector<int> seq){
    13         if(seq.empty()){
    14             return true;
    15         }
    16         int len=seq.size();
    17         int rootVal=seq[len-1];   // 找到当前序列的根节点
    18         vector<int> leftTree,rightTree;
    19         int i=0;
    20         while(i<len-1){  // 左子树序列
    21             if(seq[i]<rootVal){ // 不用考虑等于,因为都不重复
    22                 leftTree.push_back(seq[i]);
    23             }else{
    24                 break;
    25             }
    26             ++i;
    27         }
    28         while(i<len-1){  // 右子树序列,如果序列中发现小于根节点的值,那直接返回fasle
    29             if(seq[i]>rootVal){
    30                 rightTree.push_back(seq[i]);
    31             }else{
    32                 return false;
    33             }
    34             ++i;
    35         }
    36         return correctST(leftTree) && correctST(rightTree);
    37     }
    38 };
    心之所愿,永不相忘
  • 相关阅读:
    二叉排序树的建立_查找_插入_删除
    java学习书籍推荐
    Java之路——敬JAVA初学者(作者:MoMo)
    结构体的定义及应用
    java获取缓存通用类
    金额转换为自定义字符串
    WebApi接入Swagger
    webApi的控制台服务
    自动生成缓存Key值的CacheKeyHelper
    DictionaryHelper2
  • 原文地址:https://www.cnblogs.com/zgll/p/15072216.html
Copyright © 2011-2022 走看看