• 剑指offer系列17:二叉搜索树的后序遍历序列


    二叉搜索树(BST树):首先是二叉树,其次:非叶子结点的左指针指向的结点的值小于其父节点的子树,右指针指向的结点的值大于其父节点的值。

    这样就可以形成以个思路,来一个vector,首先把最后一个拿出来,它是根结点。然后从头开始找比它大的第一个数,区分左右子树。第一个比根结点大的树之前都是左子树,其余为右子树。在循环右子树,如果右子树有小于根结点的返回false。以此递归循环即可。

     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4 class Solution {
     5 public:
     6     bool VerifySquenceOfBST(vector<int> sequence)
     7     {
     8         return myfunction(sequence, 0, sequence.size() - 1);
     9     }
    10     bool myfunction(vector<int> sequence, int begain, int end)
    11     {
    12         if (sequence.empty()||end<begain)
    13             return false;
    14         int root = sequence[end];
    15         int sig = end;//默认没有右子树
    16         for (int i = 0; i < end; i++)//找到左右子树分界点
    17         {
    18             if (sequence[i] > root)
    19             {
    20                 sig = i;
    21                 break;
    22             }
    23         }
    24         for (int i = sig; i < end; i++)//判断右子树的结点是否大于根结点
    25         {
    26             if (sequence[i] < root)
    27                 return false;
    28         }
    29         bool temp=true;
    30         if( sig > begain)//是否存在左子树
    31         {
    32             temp = myfunction(sequence, 0, sig - 1);
    33         }
    34         if (temp&&end > sig)
    35         {
    36             temp = myfunction(sequence, sig, end-1);
    37         }
    38         return temp;
    39     }
    40 };
    41 int main()
    42 {
    43     Solution solu;
    44     vector<int>  v1 = {5,7,6,9,11,10,8};
    45     vector<int>  v2 = { 7,4,6,5 };
    46     cout << solu.VerifySquenceOfBST(v1) << endl;
    47     cout << solu.VerifySquenceOfBST(v2) << endl;
    48     return 0;
    49 }

    这个题是二叉搜索树,遍历方式是后序。

  • 相关阅读:
    作业要求 20200924-5 四则运算试题生成,结对
    作业要求 20200924-1 每周例行报告
    作业要求20200924-3 单元测试,结对
    作业要求20200924-4 代码规范,结对要求
    20200910-1每周例行报告
    20200910-博客作业
    通读《构建之法》
    20200910-3 命令行和控制台编程
    20200924-2 功能测试
    20200924-5 四则运算试题生成,结对
  • 原文地址:https://www.cnblogs.com/neverland0718/p/11044021.html
Copyright © 2020-2023  润新知