递增有序输出二叉树叶子结点
如何实现查找结点后对字母进行排序呢
供参考:
#include<iostream>
using namespace std;
typedef struct BiTNode
{
char data;
struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
char a[100];
int len = 0;
void InitTree(BiTree& T)
{
T = NULL;
}
void creat(BiTree& T)
{
char ch;
cin >> ch;
if (ch == '#')
T = NULL;
else
{
T = new BiTNode;
T->data = ch;
creat(T->lchild);
creat(T->rchild);
}
}
void preorder(BiTree T)
{
if (T)
{
if (T->lchild == NULL && T->rchild == NULL)
{
a[len++] = T->data;
}
preorder(T->lchild);
preorder(T->rchild);
}
}
int main()
{
BiTree T;
InitTree(T);
creat(T);
preorder(T);
char t;
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
for (int k = 0; k < len; k++)
cout << a[k];
return 0;
}
定义一个全局数组
char arr[100];
int curr = 0;
把所有的 cout << T->data; 修改为 arr[curr++] = T->data;
在程序结束之前,对arr排序,再输出