1043 Is It a Binary Search Tree (25)(25 分)

模板题目:建立二叉搜索树,先序和后序遍历

#include<bits/stdc++.h>
using namespace std;
struct node{
    int data;
    node *rchild,*lchild;
};
int a[1010],n;
vector<int>pre,premirror,post,postmirror;
void insert(node*&root,int x)
{
    if(root==NULL)
    {
        root=new node;
        root->data=x;
        root->lchild=root->rchild=NULL;
        return;
    }
    if(x<root->data)insert(root->lchild,x);
    else insert(root->rchild,x);
}
void preorder(node*root)
{
    if(root==NULL)return;
    pre.push_back(root->data);
    preorder(root->lchild);
    preorder(root->rchild); 
} 
void preordermirror(node*root)
{
    if(root==NULL)return;
    premirror.push_back(root->data);
    preordermirror(root->rchild);
    preordermirror(root->lchild);
}
void postorder(node*root)
{
    if(root==NULL)return;
    postorder(root->lchild);
    postorder(root->rchild);
    post.push_back(root->data);
}
void postordermirror(node*root)
{
    if(root==NULL)return;
    postordermirror(root->rchild);
    postordermirror(root->lchild);
    postmirror.push_back(root->data);
}
bool issame(vector<int>p)
{
    for(int i=0;i<p.size();i++)
    {
        if(a[i]!=p[i])return false;
    }
    return true;
}
void show(vector<int>p)
{
    for(int i=0;i<p.size();i++)
    {
        printf("%d",p[i]);
        if(i!=p.size()-1)printf(" ");
    }
}
int main()
{
    scanf("%d",&n);
    node*root=NULL;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        insert(root,a[i]);  
    }
    preorder(root);
    preordermirror(root); 
    if(issame(pre)||issame(premirror))
    {
        printf("YES\n");
        if(issame(pre))
        {
            postorder(root);
            show(post);
        }
        else if(issame(premirror))
        {
            postordermirror(root);
            show(postmirror);
        }
    }
    else printf("NO\n");
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题量有点多,建议Ctrl + F题号或题目哦~ 二叉树的遍历(前序遍历,中序遍历,后序遍历)[144] Binar...
    野狗子嗷嗷嗷阅读 9,366评论 2 37
  • 现如今小鲜肉当道,形势一片大好,这股鲜肉风不仅是演艺圈,兢兢业业的体坛也跟着凑热闹。国民老公王思聪随着“霍顿事件”...
    Director杨阅读 905评论 8 6
  • 有时候生活会给你一些挫折 别人说那是让你晓得 为了什么而活 我想我得感恩着 将它们一句带过 后来我也尝试过 咒骂它...
    服心阅读 230评论 0 0

友情链接更多精彩内容