C语言数据结构之二叉树层序遍历实例讲解
程序员文章站
2022-09-02 22:11:48
c语言数据结构之二叉树层序遍历实例讲解
time limit: 1000ms memory limit: 65536kb
submit statistic
problem description
已...
c语言数据结构之二叉树层序遍历实例讲解
time limit: 1000ms memory limit: 65536kb
submit statistic
problem description
已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。
input
输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据。每行是一个长度小于50个字符的字符串。
output
输出二叉树的层次遍历序列。
example input
2
abd,,eg,,,cf,,,
xnl,,i,,u,,
example output
abcdefg
xnuli
#include #include #include char s[60]; int i, j, k; struct node { char data; struct node *l, *r; }; struct node *creat() { i++; struct node *root; if(s[i] == ',') return null; else { root = (struct node*) malloc (sizeof(struct node)); root -> data = s[i]; root -> l = creat(); root -> r = creat(); } return root; } void cengci(struct node *root) { if(!root) return; struct node *q[100000], *p; int f, r; q[1] = root, f = r = 1; while(f <= r) { p = q[f]; f++; printf("%c", p -> data); if(p -> l != null) { r++; q[r] = p -> l; } if(p -> r != null) { r++; q[r] = p -> r; } } } int main() { int t; scanf("%d", &t); while(t--) { i = -1; j = 0; k = 0; scanf("%s", s); struct node *root; root = creat(); cengci(root); printf("\n"); } return 0; }
下一篇: 怎么找到最长子串位置