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: 如果觉得本文对你有帮助的话,那么【推荐】给大家吧,希望今后能够为大家带来更好的技术文章!敬请【关注】
  • 相关阅读:
    如何添加和删除本地存储中的数据?
    本地存储和cookies之间的区别是什么?
    那么如何使用WebSQL?
    WebSQL是HTML 5规范的一部分吗?
    WebSQL是什么?
    什么是本地存储的生命周期?
    本地存储和cookies之间的区别是什么?
    什么是多线程中的上下文切换?
    web workers是什么,为什么我们需要web workers?
    连接点?
  • 原文地址:https://www.cnblogs.com/hellogiser/p/3738437.html
Copyright © 2011-2022 走看看