二叉树的后序序列

来源:互联网 发布:java ftp断点续传 下载 编辑:程序博客网 时间:2024/06/07 06:54
/****************************************************描述:    输入一个整数数组,判断该数组是不是某个搜索二叉树    的后序遍历。思路:    1、后序遍历中,最后一个节点为根节点。    2、数组可以分为两部分,前面的值比根    节点小,后面的值比根节点大。    3、利用递归的思想,将每个点都作为根    节点来判断,如果所有节点都成立,则     该数组是后序遍历的结果。***************************************************/#define  _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;bool VerifySquenceOfBST(int *arr, int len){    if (arr == NULL || len <= 0)    {        return false;    }    int root = arr[len - 1];    int i = 0;    //找到第一个大于根节点的值。    for (i; i < len - 1; i++)    {        if (arr[i]>root)            break;    }    int j = i;    //左边以为上面一定满足,现在看右边是否满足    for (j; j < len - 1; j++)    {        if (arr[j] < root)            return false;    }    //判断做子树是否为二叉搜索树    bool left = true;    if (i >0)    {        VerifySquenceOfBST(arr, i);    }    //判断右子树是否为搜索树    bool right = true;    if (i < len - 1)    {        right = VerifySquenceOfBST(arr + i, len - 1 - i);    }    return (left && right);}void test(){    int arr[7] = { 5, 7, 6, 9, 11, 10, 8 };    cout << VerifySquenceOfBST(arr, 7);}int main(){    test();    return 0;}
0 0
原创粉丝点击