03-树2 List Leaves 三个测试点无法通过

图片说明

#include <iostream>
#include <queue>
using namespace std;
#define MAXsize 10

struct Node
{
    int left;
    int right;
}treeinput[MAXsize];

int buildTree(struct Node tree[])
{
    int N;
    char l;
    char r;

    int root = -1;
    scanf("%d",&N);
    int check[N];
    getchar();
    for(int i = 0; i < N; i++)
    {
        scanf("%c %c", &l, &r);
        getchar();
        if(l != '-')
        {
            tree[i].left = l - '0';
            check[tree[i].left] = 1;
        }
        else
        {
            tree[i].left = -1;
        }
        if(r != '-')
        {
            tree[i].right = r - '0';
            check[tree[i].right] = 1;
        }
        else
        {
            tree[i].right = -1;
        }
    }
    for(int i = 0; i < N; i++)
    {
        if (check[i] == 0)
        {
            root = i;
            break;
        }
    }
    return root;
}

vector<int> traverse(int root)
{
    queue<int> data;
    vector<int> vect;
    int temp;
    data.push(root);
    while(!data.empty())
    {
        temp = data.front();
        if(treeinput[temp].left == -1 && treeinput[temp].right == -1)
        {
            vect.push_back(temp);
        }
        else
        {
            if(treeinput[temp].left != -1)
            {
                data.push(treeinput[temp].left);
            }
            if(treeinput[temp].right != -1)
            {
                data.push(treeinput[temp].right);
            }

        }
        data.pop();
    }
    return vect;
}


int main()
{
    int tree1 = buildTree(treeinput);
    vector<int> vect = traverse(tree1);
    for(int i = 0; i < vect.size(); i++)
    {
        if(i == 0)
        {
            printf("%d", vect[i]);
        }
        else
        {
            printf(" %d", vect[i]);
        }
    }
}

https://blog.csdn.net/wanmeiwushang/article/details/52743938