zoukankan      html  css  js  c++  java
  • 二叉搜索树的前序遍序序列 仿后序

    实现功能:给定一个序列,判断是否是一个搜索树的前序序列,如果是输出"Yes",反之输出"NO"。

    这是后序遍历链接:http://blog.csdn.net/wyh7280/article/details/47067603

    要解决的问题和题目:http://ac.jobdu.com/problem.php?pid=1367  类似

    注:这里考虑严格的二叉搜索树,即左子树上的值全部小于根,右子树上的值全部大于根,不存在相等情况,两两不同。

    代码:

    #include<iostream>
    #include<cstdlib>
    #include<cstdio>
    using namespace std;
    bool Is_PreOrder(int *val,int beg,int en)
    {
        int i,j;
        if(beg>en) return true;
        int temp=val[beg];
        for(i=beg+1;i<=en;i++)
        {
            if(val[i]>temp)
                break;
        }
        for(j=i+1;j<=en;j++)
        {
            if(val[j]<temp)
                return false;
        }
        return Is_PreOrder(val,beg+1,i-1)&&Is_PreOrder(val,i+1,en);
    }
    int main()
    {
        int n;
        int val[1000];
        while(scanf("%d",&n)==1)
        {
            for(int i=0;i<n;i++)
                scanf("%d",&val[i]);
            if(Is_PreOrder(val,0,n-1))
            {
                printf("Yes
    ");
            }
            else
                printf("No
    ");
        }
        return 0;
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Servlet Class4
    Servlet Class3
    Servlet Class2
    Servlet Class1
    HTTP基础知识
    XML基础知识
    JAVA Class25
    JAVA Class24
    JAVA Class23
    JAVA Class22
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965274.html
Copyright © 2011-2022 走看看