#include<bits/stdc++.h>
using namespace std;
char pre[100];
char leaf[100];
int sum=0,i=0;
struct node
{
char data;
node *lchild;
node *rchild;
};
node *creat()
{
node *root;
char ch = pre[i++];
if(ch==',')
{
root=NULL;
}
else
{
root = new node();
root->data=ch;
root->lchild = creat();
root->rchild = creat();
}
return root;
}
void getleaf(node *root)
{
node *temp[110];
int in=0,out=0;
int flag;
temp[in++]=root;
while(in>out)
{
if(temp[out])
{
flag=0;
temp[in++] = temp[out]->lchild;
if(temp[out]->lchild==NULL) flag++;//若结点不为空,则下一个数组元素存左孩子
temp[in++] = temp[out]->rchild;//存右孩子的地址;
if(temp[out]->rchild==NULL) flag++;
if(flag==2)
cout<<temp[out]->data;//若左右孩子都为空,则为叶子,输出次结点
}
out++;
}
}
int main()
{
while(cin>>pre)
{
sum=0,i=0;
node *root = new node();
root = creat();
getleaf(root);
cout<<endl;
}
return 0;
}
I - 数据结构实验之二叉树七:叶子问题
最新推荐文章于 2023-05-14 15:55:35 发布