赞
踩
对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶结点。
输入格式:
首先第一行给出一个正整数 n(≤10),为树中结点总数。树中的结点从 0 到 n−1 编号。随后 n 行,每行给出一个对应结点左右孩子的编号。如果某个孩子不存在,则在对应位置给出 "-"。编号间以 1 个空格分隔。
输出格式:
在一行中按规定顺序输出叶结点的编号。编号间以 1 个空格分隔,行首尾不得有多余空格。
输入样例:
- 8
- 1 -
- - -
- 0 -
- 2 7
- - -
- - -
- 5 -
- 4 6
输出样例:
4 1 5
代码演示:
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct node{
- int data;
- struct node*left;
- struct node*right;
- }Node;
- typedef struct que{
- Node *data[1000];
- int front;
- int rear;
- }queue;
-
- int Findhead(char **node,int n){
- int test[n];
- for(int i=0;i<n;i++){
- test[i] = 0;
- }
- for(int i=0;i<n;i++){
- if(node[i][0] != '-'){
- test[(node[i][0]-'0')] = 1;
- }
- if(node[i][2] != '-'){
- test[(node[i][2]-'0')] = 1;
- }
- }
- int flag;
- for(int i=0;i<n;i++){
- if(test[i] == 0){
- flag = i;
- break;
- }
- }
- return flag;
- }
-
- Node *createtree(int head,Node *root,char **node,int n){
-
-
- root = (Node*)malloc(sizeof(Node));
- root->data = head;
- root->left = NULL;
- root->right = NULL;
-
- if(node[head][0]!='-'){
- root->left = createtree(node[head][0]-'0',root->left,node,n);
- }
- if(node[head][2]!='-'){
- root->right = createtree(node[head][2]-'0',root->left,node,n);
- }
-
- return root;
-
- }
- void levelprintleave(Node *root)
- {
- int flag = 0;
- if(root){
- queue *Q = (queue*)malloc(sizeof(queue));
- Q->front = -1;
- Q->rear = -1;
- Q->data[++Q->rear] = root;//初始化
- while(Q->front<Q->rear){
-
- Node *item = Q->data[++Q->front];//留值
-
- if(!item->left&&!item->right){
- if(flag==0){
- flag = 1;
- printf("%d",item->data);
- }else
- printf(" %d",item->data);//访问
- }
- if(item->left){
- Q->data[++Q->rear] = item->left;
- }
- if(item->right){
- Q->data[++Q->rear] = item->right;
- }
-
- }
- }
- }
-
- int main()
- {
- int n;
- scanf("%d",&n);
-
- char **node = (char**)malloc(sizeof(char*)*n);
- getchar();
-
- for(int i=0;i<n;i++){
- node[i] = (char *)malloc(sizeof(char)*4);
- gets(node[i]);
- }
-
- int head = Findhead(node,n);
-
- Node *root = createtree(head,root,node,n);
-
- levelprintleave(root);
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。