zoukankan      html  css  js  c++  java
  • 九度oj 题目1367:二叉搜索树的后序遍历序列

    题目描述:

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

    输入:

    每个测试案例包括2行:

    第一行为1个整数n(1<=n<=10000),表示数组的长度。

    第二行包含n个整数,表示这个数组,数组中的数的范围是[0,100000000]。

    输出:

    对应每个测试案例,如果输入数组是某二叉搜索树的后序遍历的结果输出Yes,否则输出No。

    样例输入:
    7
    5 7 6 9 11 10 8
    4
    7 4 6 5
    
    样例输出:
    Yes
    No

    参考其他人的博客:“
    如果按照后序遍历,先左后右最后自己的顺序来遍历树,数组的最后一个元素肯定是自己(父节点),然后剩余的部分分成两个部分,第一部分都比自己小(左子树部分),
    第二部分都比自己大(右子树部分),因此套用这个关系就可以循环检验出是否是二叉搜索树的后序遍历了。”
    代码如下
     1 #include <cstdio>
     2 #include <cstdlib>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <iostream>
     6 #define MAX 10002
     7 
     8 using namespace std;
     9 int num[MAX];
    10 
    11 bool isHou(int start, int end) {
    12     if(end <= start) {
    13         return true;
    14     }
    15     int state = 0;
    16     bool isOk = true;
    17     int fen = end;
    18     int i = start;
    19     while(i < end) {
    20         if(num[i] > num[end]) {
    21             fen = i;
    22             break;
    23         }
    24         if(num[i] == num[end]) {
    25             return false;
    26         }
    27         i++;
    28     }
    29     while(i < end) {
    30         if(num[i] < num[end]) {
    31             return false;
    32         }
    33         i++;
    34     }
    35     
    36     return isHou(start, fen-1) && isHou(fen, end-1);
    37 }
    38 
    39 int main(int argc, char const *argv[])
    40 {
    41     int n;
    42     //freopen("input.txt","r",stdin);
    43     while(scanf("%d",&n) != EOF) {
    44         for(int i = 0; i < n; i++) {
    45             scanf("%d",&num[i]);
    46         }
    47         if(isHou(0, n-1)) {
    48             puts("Yes");
    49         }
    50         else {
    51             puts("No");
    52         }
    53     }
    54     return 0;
    55 }
  • 相关阅读:
    hdu 4027 Can you answer these queries? 线段树
    ZOJ1610 Count the Colors 线段树
    poj 2528 Mayor's posters 离散化 线段树
    hdu 1599 find the mincost route floyd求最小环
    POJ 2686 Traveling by Stagecoach 状压DP
    POJ 1990 MooFest 树状数组
    POJ 2955 Brackets 区间DP
    lightoj 1422 Halloween Costumes 区间DP
    模板 有源汇上下界最小流 loj117
    模板 有源汇上下界最大流 loj116
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5767590.html
Copyright © 2011-2022 走看看