网站建设的参考文献,图片加文字在线制作,it培训机构学费,做侵权电影网站什么后果题目描述 已知一个按先序输入的字符序列#xff0c;如abd,,eg,,,cf,,,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。 输入 输入数据有多行#xff0c;每一行是一个长度小于50个字符的字符串。输出 按从上到下从左到右的顺序输出… 题目描述 已知一个按先序输入的字符序列如abd,,eg,,,cf,,,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。 输入 输入数据有多行每一行是一个长度小于50个字符的字符串。输出 按从上到下从左到右的顺序输出二叉树的叶子结点。示例输入 abd,,eg,,,cf,,,
xnl,,i,,u,, 示例输出 dfg
uli
#includestdio.h
#includestring.h
#includestdlib.h
typedef char element;
typedef struct BNode
{element data;BNode *lchild,*rchild;
}*BiTree;
typedef struct QNode
{BiTree data;QNode *next;
}*queueptr;
typedef struct
{queueptr front;queueptr rear;
}queue;
char str[55];
int i;
element CreateBiTree(BiTree T)//生成树
{if(str[i],) TNULL;//树空else{Tnew struct BNode;if(!T) exit(0);T-datastr[i-1];CreateBiTree(T-lchild);//建左子树CreateBiTree(T-rchild);//建右子树}return 1;
}
void initqueue(queue Q)//队列的初始化
{Q.frontQ.rear(queueptr)malloc(sizeof(QNode));if(!Q.front) exit(0);Q.front-nextNULL;
}
void Enqueue(queue Q,BiTree e)//e前一定要加取地址符否则死循环
{//从队尾进队相当建顺序链表queueptr p;p(queueptr)malloc(sizeof(QNode));if(!p) exit(0);p-datae;p-nextNULL;Q.rear-nextp;Q.rearp;
}
element Dequeue(queue Q,BiTree e)//e前一定要加取地址符否则死循环
{//从队头出队queueptr p;if(Q.frontQ.rear)return 0;pQ.front-next;ep-data;Q.front-nextp-next;if(Q.rearp)//只剩一个元素时Q.rearQ.front;free(p);return 1;
}
int Emptyqueue(queue Q)//清空队
{if(Q.frontQ.rear)return 0;return 1;
}
void Traverse(BiTree T)//浏览树的每个节点进而判断树的叶子
{queue Q;initqueue(Q);if(T)Enqueue(Q,T);while(Emptyqueue(Q)){Dequeue(Q,T);if(!T-lchild!T-rchild)//叶子结点判定条件printf(%c,T-data);if(T-lchild)Enqueue(Q,T-lchild);if(T-rchild)Enqueue(Q,T-rchild);}
}int main()
{BiTree T;while(~scanf(%s,str)){i0;CreateBiTree(T);//生成树Traverse(T);//树叶子的遍历printf(\n);}
}
#includeiostream
#includecstring
#includequeue
#includecstdio
#includealgorithm
using namespace std;
typedef struct Bnode
{
char data;
Bnode *rchild,*lchild;
}*BiTree,Bnode;
char str[55];
int i;
void create(BiTree T)
{
if(str[i],) TNULL;
else
{
Tnew Bnode;
if(!T) exit(0);
T-datastr[i-1];
create(T-lchild);
create(T-rchild);
}
}
void cengci(BiTree T)
{
int out0,in0;
BiTree q[100];//存树的队列;
if(T)
q[in]T;
while(inout)
{
if(q[out])
{
printf(%c,q[out]-data);
q[in]q[out]-lchild;
q[in]q[out]-rchild;
}
out;
}
}
void Traverse(BiTree T)
{
queueBiTree q;
BiTree pNULL;
if(T)
{
q.push(T);
}
while(!q.empty())
{
pq.front();
q.pop();
if(!p-lchild!p-rchild)
coutp-data;
if(p-lchild)
q.push(p-lchild);
if(p-rchild)
q.push(p-rchild);
}
}
int main()
{
BiTree T;
while(~scanf(%s,str))
{
TNULL;
i0;
create(T);
//cengci(T);
Traverse(T);
coutendl;
}
return 0;
}