[数据结构]树的建立与基本操作 解题报告

Problem Description

在本实验中,程序的输入是一个表示树结构的广义表。假设树的根为 root ,其子树森林 F = ( T1 , T2 , ... , Tn ),设与该树对应的广义表为 L ,则 L =(原子,子表 1 ,子表 2 , ... ,子表 n ),其中原子对应 root ,子表 i ( 1<i<=n )对应 Ti 。例如:广义表 (a,(b,(c),(d)),(f,(g),(h ),(i))) 表示的树如图所示:


程序的输出为树的层次结构、树的度以及各种度的结点个数。
在输出树的层次结构时,先输出根结点,然后依次输出各个子树,每个子树向里缩进 4 个空格,如:针对上图表示的树,输出的内容应为:

a
    b
        c
        d
    f
        g
        h
        i
Degree of tree: 3
Number of nodes of degree 0: 5
Number of nodes of degree 1: 0
Number of nodes of degree 2: 2
Number of nodes of degree 3: 1

**例: **(下面的黑体为输入)

(a,(b),(c,(d),(e,(g),(h )),(f)))
a
b
c
d
e
g
h
f
Degree of tree: 3
Number of nodes of degree 0: 5
Number of nodes of degree 1: 0
Number of nodes of degree 2: 2
Number of nodes of degree 3: 1


AcCode

//
//  main.cpp
//  树的建立与基本操作
//
//  Created by jetviper on 2017/3/26.
//  Copyright © 2017年 jetviper. All rights reserved.
//

#include <stdio.h>
#include<string.h>
int main() {
    char str[1000],strtab[5]="    ";
    int degree = 0 ,deep = -1,tddgree[100]={0},res[100]={0};
    
    scanf("%s",&str);
    int len = strlen(str);
    
    
    int lastleft = 0;
    for(int i =0;i<len;i++){
        if(str[i]==',')continue;
        else if(str[i]=='('){
            lastleft = 1;
            continue;
        }
        else if(str[i]==')'){
            if(deep>-1){
                if(lastleft == 0)res[tddgree[deep]]++;
                if(tddgree[deep]>degree)degree = tddgree[deep];
                tddgree[deep]=0;
                deep--;
            }
            else {
                break;
            }
            
            continue;
        }
        
        
        else {
            if(lastleft == 1){
                if(deep!= -1)tddgree[deep]++;
                deep++;
                lastleft = 0;
            }
            
            for(int j=0;j<deep;j++){
                printf("%s",strtab);
            }
            printf("%c\n",str[i]);
            
        }
    }
    printf("Degree of tree: %d\n",degree);
    
    for(int i=0;i<=degree;i++){
        printf("Number of nodes of degree %d: %d\n",i,res[i]);
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,805评论 19 139
  • 第十八章:永恒不变的友谊【十一加更】 放学铃声,悠然奏起。 奈伊不声不响地挎上包,趁着抚子和唯世做值日的空...
    森系的盒子阅读 1,873评论 0 1
  • CSS全称为“层叠样式表 (Cascading Style Sheets) 主要用于定义样式,如要文字大小、颜色、...
    y32u1911阅读 2,939评论 0 0
  • 转至:http://blog.csdn.net/heqiangflytosky/article/details/5...
    kkgo阅读 7,980评论 0 1
  • 这不是真实的故事。 三月半,油菜花早已烂漫整个荒野,大片的金黄与坚守山头的郁葱相映成影。扑面的春风附在摇摆...
    baihongg阅读 2,812评论 0 1

友情链接更多精彩内容