BUAA 2014级数据结构第五次上机 二叉树之数组转换广义表

按题意建立好二叉树,再按照先序遍历输出结果。

#include<cstdio>
#include<vector>
#include<queue>
#include<string.h>
#include<algorithm>
using namespace std;

struct node
{
    int left, right, date;

}node[1005];

int a[1005], flag[1005];

void dfs(int father)
{
    printf("%d", node[father].date);
    if (node[father].left != -1 || node[father].right != -1) printf("(");
    if (node[father].left != -1 && node[father].right == -1)
    {
        dfs(node[father].left);
        printf(")");
    }
    else if (node[father].left == -1 && node[father].right != -1)
    {
        printf(",");
        dfs(node[father].right);
        printf(")");
    }
    else if (node[father].left != -1 && node[father].right != -1)
    {
        dfs(node[father].left);
        printf(",");
        dfs(node[father].right);
        printf(")");
    }

}

int main()
{
    int n, i;
    while (~scanf("%d", &n))
    {
        int numm = 1;
        for (i = 0; i <= 1000; i++)
        {
            node[i].date = -1;
            node[i].left = -1;
            node[i].right = -1;
        }
        memset(flag, 0, sizeof(flag));
        for (i = 1; i <= n; i++) scanf("%d", &a[i]);
        int father = 1, jishu = 0;
        node[numm].date = a[1]; numm++;
        for (i = 2; i <= n; i++)
        {
            if (jishu == 0)
            {
                jishu++;
                if (a[i] != -1)
                {
                    node[father].left = numm;
                    node[numm].date = a[i];
                    numm++;
                }
            }
            else if (jishu == 1)
            {
                if (a[i] != -1)
                {
                    node[father].right = numm;
                    node[numm].date = a[i];
                    numm++;
                }
                jishu = 0;
                father++;
            }
        }
        dfs(1);
        printf("\n");
    }
    return 0;
}
时间: 2024-08-06 03:40:56

BUAA 2014级数据结构第五次上机 二叉树之数组转换广义表的相关文章

数据结构实践项目——数组和广义表

本文针对 [数据结构基础系列网络课程(5):数组和广义表] 1. 数组的基本概念与存储结构 2. 特殊矩阵的压缩存储 3. 稀疏矩阵的三元组表示 4. 稀疏矩阵的十字链表表示 5. 广义表 6. 广义表的存储结构及基本运算的实现 [项目1 - 猴子选大王(数组版)] 一群猴子,编号是1,2,3 -m,这群猴子(m个)按照1-m的顺序围坐一圈.从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,最后一只出圈的猴子为大王.输入m和n,输出猴子离开圈子的顺序,从中也可以看出最后为大王是几号

数据结构期末复习第五章数组和广义表

数据结构期末复习第五章 数组和广义表 二维数组A[m][n]按行优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((i-1)*n+j-1)*d     设数组的基址为LOC(a00) :LOC(aij)=LOC(a00)+( i*n+j )*d    二维数组A[m][n]按列优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((j

数据结构与算法系列研究四——数组和广义表

稀疏矩阵的十字链表实现和转置 一.数组和广义表的定义 数组的定义1:一个 N 维数组是受 N 组线性关系约束的线性表.           二维数组的逻辑结构可形式地描述为:           2_ARRAY(D,R)              其中 D={aij} | i=0,1,...,b1-1; j=0,1,...,b2-1;aij∈D0}              R={Row,Col}              Row={<aij,ai,j+1>|0<=i<=b1-1;

第五章:1.数组和广义表 -- 数组

前言: 2.3.4章讨论的线性结构中的数据元素都是非结构的原子类型,元素的值是不再分解的.本章讨论的两种数据结构---数组和广义表可以看成是线性表在下述含以上的扩展:表中的数据元素本身也是一个数据结构. 其中.数组是一种比较熟知的数据类型,几乎所有程序语言都把数组类型设定为固有类型,前两节节以抽象数据类型的形式讨论数组的定义和实现,使读者加深对数组的理解. 目录: 1.数组的定义 2.数组的顺序表示和实现 3.矩阵的压缩存储 4.广义表的定义 5.广义表的存储结构 6.m元多项式的表示 7.广义

数组和广义表-第5章-《数据结构题集》答案解析-严蔚敏吴伟民版

习题集解析部分 第5章 数组和广义表 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       本习题文档的存放目录:数据结构\▼配套习题解析\▼05 数组和广义表       文档中源码的存放目录:数据结构\▼配

5-5-广义表(头尾链表存储表示)-数组和广义表-第5章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第5章  数组和广义表 - 广义表(头尾链表存储表示) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.SequenceString.c    

5-6-广义表(扩展线性链表存储表示)-数组和广义表-第5章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第5章  数组和广义表 - 广义表(扩展线性链表存储表示) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.SequenceString.c  

数据结构习题之多维数组和广义表

第五章 多维数组和广义表 一.基本要求.重点.难点 本章目的是介绍多维数组的逻辑结构特征及其存储方式.特殊矩阵和稀疏矩阵的压缩存储方法.本章重点是熟悉多维数组的存储方式.矩阵的压缩存储方式,难点是稀疏矩阵的压缩存储方示下实现的算法. 二.考核目标.考核要求 1.多维数组,要求达到"理解"层次 1.1多维数组的逻辑特征. 1.2多维数组的顺序存储结构及地址计算方式. 1.3数组是一种随机存取结构的原因. 2.矩阵的压缩存储,要求达到"理解"层次 2.1特殊矩阵和稀疏矩

5-3-行逻辑链接的顺序表(稀疏矩阵)-数组和广义表-第5章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第5章  数组和广义表 - 行逻辑链接的顺序表(稀疏矩阵) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c        相关测试