zoukankan      html  css  js  c++  java
  • 九度OJ1467题目1467:二叉排序树

    题目1467:二叉排序树

    时间限制:1 秒

    内存限制:128 兆

    特殊判题:

    提交:1169

    解决:456

    题目描述:

            二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树:


            1. 若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值;
            2. 若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值;
            3. 左、右子树本身也是一颗二叉排序树。


      现在给你N个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后,求相应的父亲节点的关键字值,如果没有父亲节点,则输出-1。

    输入:

    输入包含多组测试数据,每组测试数据两行。
    第一行,一个数字N(N<=100),表示待插入的节点数。
    第二行,N个互不相同的正整数,表示要顺序插入节点的关键字值,这些值不超过10^8。

    输出:

    输出共N行,每次插入节点后,该节点对应的父亲节点的关键字值。

    样例输入:
    5
    2 5 1 3 4
    样例输出:
    -1
    2
    2
    5
    3
    来源:
    2012年北京邮电大学计算机研究生机试真题
     
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 struct BT{
     4         int m,f;
     5         struct BT *l,*r;
     6 }tree[100],*T;
     7 
     8 void Tree_Insert(struct BT *Q,struct BT *q)
     9 {
    10   struct BT * p;
    11   p=Q;
    12   while(1)
    13   {
    14     q->f=p->m;  
    15     if(q->m>p->m)
    16      {
    17        if(p->r!=NULL)
    18          p=p->r;           
    19        else {
    20                     p->r=q;
    21                     break;
    22              }
    23      }
    24      else {
    25             if(p->l!=NULL)
    26              p=p->l;           
    27              else {
    28                     p->l=q;
    29                     break;
    30              }
    31      } 
    32   }
    33 }
    34 
    35 int main()
    36 {
    37   int n,i;
    38 
    39   while(scanf("%d",&n)!=EOF)
    40   {  
    41      scanf("%d",&tree[0].m);
    42      tree[0].r=NULL;
    43      tree[0].l=NULL;
    44      tree[0].f=-1;
    45      T=&tree[0];
    46      for(i=1; i<n; i++)
    47      {
    48        scanf("%d",&tree[i].m);
    49        tree[i].r=NULL;
    50        tree[i].l=NULL;
    51        Tree_Insert(T, &tree[i]); 
    52      }
    53      for(i=0; i<n; i++)
    54       printf("%d\n",tree[i].f);        
    55   }  
    56   
    57   return 0;  
    58 }
  • 相关阅读:
    django中ckeditor富文本编辑器使用
    xadmin安装
    RabbitMQ应用示例
    windows下安装RabbitMQ
    第四章 面向对象
    第三章 模块
    git简单使用
    python中的装饰器
    Python 使用 argparse 开发命令行工具/获取命令行参数/子命令实现
    自动化运维工具 Ansible 安装、配置及使用
  • 原文地址:https://www.cnblogs.com/hpuwangjunling/p/3011391.html
Copyright © 2011-2022 走看看