数据结构实验之二叉树五:层序遍历

数据结构实验之二叉树五:层序遍历

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic Discuss

Problem Description

已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。

Input

 输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据。每行是一个长度小于50个字符的字符串。

Output

 输出二叉树的层次遍历序列。

Sample Input

2
abd,,eg,,,cf,,,
xnl,,i,,u,,

Sample Output

abcdefg
xnuli

 

层序遍历 有好几种方法,以后接触到我会更新。现在说一下这个代码里的思路,他是通过运用队的思路来实现的

例如        图中        这颗树,首先读取a,输出a,然后把它的左右子树输入,cd,此时输出c,把c的左右子树输入,此时堆栈内容为  d e g,然后输出d,同时将d的左右子树输出,这时队中为e g b n,就这样,输出了acdegb数据结构实验之二叉树五:层序遍历_第1张图片n。

void  cengxu(struct TreeNode *root)
{
    struct TreeNode *temp[55];
    int in = 0,out = 0;
    temp[in++] = root;
    while(in > out)
    {
        if(temp[out])
        {
            printf("%c",temp[out]->Data);
            temp[in++] = temp[out]->Left;
            temp[in++] = temp[out]->Right;
        }
        out++;
    }
}

这就是层序遍历的部分,需要深层次了解一下

temp会储存每一层的数据,用线性的方式将二叉树层次遍历成了数组的形式。

   

#include
#include
#include
typedef struct TreeNode *BinTree;
typedef  char ElementType;
typedef BinTree Position;
struct TreeNode
{
    ElementType Data;
    BinTree Left;
    BinTree Right;
} ;
char st[55];
int cnt;
struct TreeNode *creat()
{
    struct TreeNode *root;
    if(st[++cnt] == ',')
    {
        root = NULL;
    }
    else
    {
        root = (struct TreeNode *)malloc(sizeof(struct TreeNode));
        root->Data = st[cnt];
        root->Left = creat();
        root->Right = creat();
    }
    return root;
};
void  cengxu(struct TreeNode *root)
{
    struct TreeNode *temp[55];
    int in = 0,out = 0;
    temp[in++] = root;
    while(in > out)
    {
        if(temp[out])
        {
            printf("%c",temp[out]->Data);
            temp[in++] = temp[out]->Left;
            temp[in++] = temp[out]->Right;
        }
        out++;
    }
}
int main()
{
   int n;

scanf("%d",&n);
     while(n--)
     {
         scanf("%s",st);
          cnt = -1;
         struct TreeNode *root;

         root = creat();
         cengxu(root);
         printf("\n");
     }
   return 0;
}

 

你可能感兴趣的:(数据结构,树与森林)