zoukankan      html  css  js  c++  java
  • 6.二元查找树的后序遍历结果[PostOrderOfBST]

    【题目】

    输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。

    例如输入576911108,由于这一整数序列是如下树的后序遍历结果:

             8
           /  
          6    10
        /     /
       5   7   9  11

    因此返回true

    如果输入7465,没有哪棵树的后序遍历的结果是这个序列,因此返回false

    【思路】

    在后续遍历得到的序列中,最后一个元素为树的根结点。从头开始扫描这个序列,比根结点小的元素都应该位于序列的左半部分;从第一个大于跟结点开始到跟结点前面的一个元素为止,所有元素都应该大于跟结点,因为这部分元素对应的是树的右子树。根据这样的划分,把序列划分为左右两部分,我们递归地确认序列的左、右两部分是不是都是二元查找树。

    【代码】

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     

    bool VerifySequenceOfBST(int a[], int n)
    {
        
    if (NULL == a || n < 0)
            
    return false;
        
    //if (n==1)
        //return true;

        
    int root = a[n - 1];
        
    int i = 0;
        
    for (; i < n - 1; i++)
        {
            
    if (a[i] > root)
                
    break;
        }

        
    int j = i;
        
    for (; j < n - 1; j++)
        {
            
    if (a[j] < root)
                
    return false;
        }

        
    bool left = true;
        
    if (i > 0)
            left = VerifySequenceOfBST(a, i);

        
    bool right = true;
        
    if (i < n - 1)
            right = VerifySequenceOfBST(a + i, n - 
    1 - i);

        
    return (left && right);
    }

     【参考】

    http://zhedahht.blog.163.com/blog/static/25411174200725319627/

    个人学习笔记,欢迎拍砖!---by hellogiser

    Author: hellogiser
    Warning: 本文版权归作者和博客园共有,欢迎转载,但请保留此段声明,且在文章页面明显位置给出原文连接。Thanks!
    Me: 如果觉得本文对你有帮助的话,那么【推荐】给大家吧,希望今后能够为大家带来更好的技术文章!敬请【关注】
  • 相关阅读:
    HDU 4432 求因子+进制转换
    HDU 4438 概率 多个情况下的数学期望
    HDU 4424 并查集+贪心思想
    POJ 1611 记录节点数的并查集
    HDU 4430 二分查找
    HDU 4422 采蘑菇的小女孩
    最短路之SPFA模板
    zju pat1065. A+B and C (64bit)
    zju pat 1058 A+B in Hogwarts
    zju pat 1054 The Dominant Color
  • 原文地址:https://www.cnblogs.com/hellogiser/p/3738437.html
Copyright © 2011-2022 走看看