BUAA 2014 급 데이터 구조 제5 차 컴퓨터 이 진 트 리 의 배열 변환 광의 표

7310 단어 데이터 구조
제목 에 따라 이 진 트 리 를 만 들 고 먼저 출력 결 과 를 옮 겨 다 닙 니 다.
 
#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("
"); } return 0; }

좋은 웹페이지 즐겨찾기