zoukankan      html  css  js  c++  java
  • (TOJ1224)数据结构练习题——后序遍历二叉树

    描述

    给定一颗二叉树,要求输出二叉树的深度以及后序遍历二叉树得到的序列。本题假设二叉树的结点数不超过1000。

    输入

    输入数据分为多组,第一行是测试数据的组数n,下面的n行分别代表一棵二叉树。每棵二叉树的结点均为正整数,数据为0代表当前结点为空,数据为-1代表二叉树数据输入结束,-1不作处理。二叉树的构造按照层次顺序(即第1层1个整数,第2层2个,第3层4个,第4层有8个......,如果某个结点不存在以0代替)。

    输出

    输出每棵二叉树的深度以及后序遍历二叉树得到的序列。

    样例输入

    2
    1 -1
    1 2 0 3 4 -1

    样例输出

    1 1
    3 3 4 2 1
     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <ctype.h>
     4 #include <math.h>
     5 
     6 int BiTree[10000];
     7 
     8 void PostTraverse(int T[], int e) 
     9 {
    10   if(T[2*e+1]!=0) PostTraverse(T,2*e+1);  
    11   if(T[2*e+2]!=0) PostTraverse(T,2*e+2); 
    12   printf(" %d",T[e]);  
    13 }
    14 
    15 void PostOrderTraverse(int T[])
    16 {
    17     PostTraverse(T,0); 
    18     printf("\n");
    19 }
    20 
    21 int TreeDeep(int T[], int n)
    22 {
    23     int i;
    24     for(i=n-1; i>=0; i--)
    25     {
    26         if(T[i]!=0)  break;
    27     }
    28     return (int)(log(i+1)/log(2)+1.1);
    29 }
    30 
    31 int main()
    32 {
    33     int n,t,i;
    34     scanf("%d",&n);
    35     while(n--)
    36     {
    37         i=0;
    38         while(scanf("%d",&t) && t!=-1)
    39         {
    40               BiTree[i++]=t;
    41         }
    42         printf("%d",TreeDeep(BiTree,i));
    43         PostOrderTraverse(BiTree);
    44     }
    45     return 0;
    46 }
    47     
     
  • 相关阅读:
    find the safest road
    杭电1874(畅通工程续)
    Red and Black
    运行和控制 Nginx 命令行参数和信号
    对中文版“Siri”打个招呼吧!
    《星际迷航》语音翻译器成真
    程序员丰厚的待遇能持续多久?
    Nginx 日志分析 AWStats + JAWStats 安装配置
    RHEL 5.4 + Nginx + Mediawiki
    麻省理工科技创业之:Win 8新概念
  • 原文地址:https://www.cnblogs.com/xueda120/p/3102930.html
Copyright © 2011-2022 走看看